mirror of
https://github.com/LucasVbr/croissant.git
synced 2026-05-13 17:12:10 +00:00
feat: Support file as argument and better error message
This commit is contained in:
+9
-9
@@ -71,14 +71,14 @@ let string_of_source_file = function
|
||||
let stmt_strings = List.map string_of_statement stmts in
|
||||
"SourceFile([" ^ String.concat ", " stmt_strings ^ "])"
|
||||
|
||||
(** The signature of the module [PRINT]. *)
|
||||
(** The signature of the module [Print]. *)
|
||||
module type Print = sig
|
||||
val string_of_type : Syntax._type -> string
|
||||
val string_of_binary_operator : Syntax.binary_operator -> string
|
||||
val string_of_unary_operator : Syntax.unary_operator -> string
|
||||
val string_of_literal : Syntax.literal -> string
|
||||
val string_of_expression : Syntax.expression -> string
|
||||
val string_of_variable_declaration : Syntax.variable_declaration -> string
|
||||
val string_of_statement : Syntax.statement -> string
|
||||
val string_of_source_file : Syntax.source_file -> string
|
||||
val string_of_type : _type -> string
|
||||
val string_of_binary_operator : binary_operator -> string
|
||||
val string_of_unary_operator : unary_operator -> string
|
||||
val string_of_literal : literal -> string
|
||||
val string_of_expression : expression -> string
|
||||
val string_of_variable_declaration : variable_declaration -> string
|
||||
val string_of_statement : statement -> string
|
||||
val string_of_source_file : source_file -> string
|
||||
end
|
||||
+8
-5
@@ -4,9 +4,8 @@
|
||||
exception Error of char
|
||||
}
|
||||
|
||||
let line_comment = "//" [^ '\n']*
|
||||
let block_comment = "/*" [^'.']* "*/"
|
||||
let comment = line_comment | block_comment
|
||||
let line_comment = "//" [^'.']*'\n'
|
||||
let block_comment = "/*" [^'.']* "*/"
|
||||
|
||||
let letter = ['a'-'z' 'A'-'Z']
|
||||
let digit = ['0'-'9']
|
||||
@@ -20,8 +19,12 @@ let char = "'" [^'.'] "'"
|
||||
let string = '"' [^'.']* '"'
|
||||
|
||||
rule token = parse
|
||||
| [' ' '\t'] | comment { token lexbuf }
|
||||
| ['\n'] { Lexing.new_line lexbuf; token lexbuf }
|
||||
| ' ' | '\t' { token lexbuf }
|
||||
| '\n' | line_comment { Lexing.new_line lexbuf; token lexbuf }
|
||||
| block_comment as comment {
|
||||
String.iter (fun c -> if c = '\n' then Lexing.new_line lexbuf) comment;
|
||||
token lexbuf
|
||||
}
|
||||
|
||||
| '+' { PLUS }
|
||||
| '-' { MINUS }
|
||||
|
||||
Reference in New Issue
Block a user