diff --git a/bin/main.ml b/bin/main.ml index 513d089..854916f 100644 --- a/bin/main.ml +++ b/bin/main.ml @@ -3,6 +3,7 @@ open Printf;; open Lisp;; open Eval;; open Read;; + let rec repl env c = let () = printf ">>> "; Out_channel.flush Out_channel.stdout; in match In_channel.input_line c with @@ -14,4 +15,5 @@ let rec repl env c = Out_channel.flush Out_channel.stdout; repl env c;; -let _ = repl (make_env ()) (In_channel.stdin) \ No newline at end of file + +let _ = repl (make_env ()) (In_channel.stdin) diff --git a/lib/dune b/lib/dune index 2c9d859..c6ff196 100644 --- a/lib/dune +++ b/lib/dune @@ -1,7 +1,5 @@ (library - (name lisp) - ;(modules ast read lexer parser) - ) + (name lisp)) (include_subdirs unqualified) diff --git a/lib/lexer.mll b/lib/lexer.mll index 7e2407c..6ea1db4 100644 --- a/lib/lexer.mll +++ b/lib/lexer.mll @@ -33,4 +33,3 @@ rule read = | '\'' { QUOTE } | _ { raise (SyntaxError ("Unexpected char: " ^ Lexing.lexeme lexbuf))} | eof { EOF } - diff --git a/lib/parser.mly b/lib/parser.mly index 77e51cc..421e932 100644 --- a/lib/parser.mly +++ b/lib/parser.mly @@ -15,20 +15,20 @@ %% prog: - | EOF { None } - | e = expr { Some e } - ; + | EOF { None } + | e = expr { Some e } +; expr: - | i = INT { LInt i } - | d = DOUBLE {LDouble d} - | s = SYM { LSymbol s } - | s = STR { LString (String.uppercase_ascii s) } - | LPAREN; l = lisp_list_rest { l } - | QUOTE; e = expr { LQuoted e} - ; + | i = INT { LInt i } + | d = DOUBLE {LDouble d} + | s = SYM { LSymbol s } + | s = STR { LString (String.uppercase_ascii s) } + | LPAREN; l = lisp_list_rest { l } + | QUOTE; e = expr { LQuoted e} +; lisp_list_rest: - | RPAREN { LNil } - | e = expr; lr = lisp_list_rest { LCons (e, lr) } - ; + | RPAREN { LNil } + | e = expr; lr = lisp_list_rest { LCons (e, lr) } +;