refactor: Use analyzer to parse rawtext into ast

This commit is contained in:
Lucàs
2024-07-04 00:41:32 +02:00
parent 6cbfb1c6a6
commit 0a42fbe3dc
5 changed files with 47 additions and 37 deletions
+28
View File
@@ -0,0 +1,28 @@
open Printf
let analyze lexbuf =
let ast =
try Parser.main Lexer.token lexbuf with
| Lexer.Error c ->
let file_name = lexbuf.lex_curr_p.pos_fname
and line_num = lexbuf.lex_curr_p.pos_lnum
and col_num = lexbuf.lex_curr_p.pos_cnum - lexbuf.lex_curr_p.pos_bol in
fprintf stderr "Fichier \"%s\", ligne %d, colonne %d\n%s: %s\n"
file_name line_num col_num "Erreur lexicale"
("Caractère '" ^ String.make 1 c ^ "' inconnu");
exit 1
| Parser.Error ->
let file_name = lexbuf.lex_curr_p.pos_fname
and line_num = lexbuf.lex_curr_p.pos_lnum
and col_num = lexbuf.lex_curr_p.pos_cnum - lexbuf.lex_curr_p.pos_bol in
fprintf stderr "Fichier \"%s\", ligne %d, colonne %d\n%s: %s\n"
file_name line_num col_num "Erreur syntaxique" "Syntaxe incorrecte";
exit 1
in
ast
let analyze_file file_name =
let file_stream = open_in file_name in
let lexbuf = Lexing.from_channel file_stream in
Lexing.set_filename lexbuf file_name;
analyze lexbuf
+6 -5
View File
@@ -1,15 +1,16 @@
;lib/dune
(library
(name lexer)
(modules lexer)
(libraries parser))
(library
(name parser)
(modules parser)
(libraries ast))
(library
(name analyzer)
(modules lexer analyzer)
(libraries parser)
)
(menhir
(modules parser))