added makefile and turned on stricter compiler errors
This commit is contained in:
3
Makefile
Normal file
3
Makefile
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
COMPILERFLAGS=-w=@A-4-33-41-42-43-34-44
|
||||||
|
all:
|
||||||
|
corebuild src/compile.native -cflags $(COMPILERFLAGS)
|
@@ -6,7 +6,7 @@ let compile file =
|
|||||||
Parse.parse s g;
|
Parse.parse s g;
|
||||||
Charstream.close_stream s;
|
Charstream.close_stream s;
|
||||||
Codegen.close_generator g;
|
Codegen.close_generator g;
|
||||||
let _ = Sys.command ("nasm -f macho " ^ g.file) in
|
let _ = Sys.command ("nasm -f macho " ^ g.Codegen.file) in
|
||||||
let _ = Sys.command ("gcc -o " ^ o ^ " " ^ o ^ ".o") in
|
let _ = Sys.command ("gcc -o " ^ o ^ " " ^ o ^ ".o") in
|
||||||
()
|
()
|
||||||
with
|
with
|
||||||
|
@@ -48,16 +48,16 @@ let rec expression s g d =
|
|||||||
| Some l ->
|
| Some l ->
|
||||||
(match Token.next_token s with
|
(match Token.next_token s with
|
||||||
| Token.Add ->
|
| Token.Add ->
|
||||||
let _ = Token.match_token s Add in
|
let _ = Token.match_token s Token.Add in
|
||||||
add s g d l (expression s g (d+1))
|
add s g d l (expression s g (d+1))
|
||||||
| Token.Sub ->
|
| Token.Sub ->
|
||||||
let _ = Token.match_token s Sub in
|
let _ = Token.match_token s Token.Sub in
|
||||||
sub s g d l (expression s g (d+1))
|
sub s g d l (expression s g (d+1))
|
||||||
| Token.Mul ->
|
| Token.Mul ->
|
||||||
let _ = Token.match_token s Mul in
|
let _ = Token.match_token s Token.Mul in
|
||||||
mul s g d l (expression s g (d+1))
|
mul s g d l (expression s g (d+1))
|
||||||
| Token.Div ->
|
| Token.Div ->
|
||||||
let _ = Token.match_token s Div in
|
let _ = Token.match_token s Token.Div in
|
||||||
div s g d l (expression s g (d+1))
|
div s g d l (expression s g (d+1))
|
||||||
| _ -> l)
|
| _ -> l)
|
||||||
| None -> Token.syntax_error s "literal or identifier expected"
|
| None -> Token.syntax_error s "literal or identifier expected"
|
||||||
|
@@ -19,7 +19,7 @@ type scanner = { mutable last_token: token option; stm: Charstream.stream }
|
|||||||
exception Syntax_error of string
|
exception Syntax_error of string
|
||||||
|
|
||||||
let syntax_error s msg =
|
let syntax_error s msg =
|
||||||
raise (Syntax_error (msg ^" on line " ^ (string_of_int s.stm.line_num)))
|
raise (Syntax_error (msg ^ " on line " ^ (string_of_int s.stm.Charstream.line_num)))
|
||||||
|
|
||||||
let rec skip_blank_chars stm =
|
let rec skip_blank_chars stm =
|
||||||
let c = Charstream.read_char stm in
|
let c = Charstream.read_char stm in
|
||||||
|
Reference in New Issue
Block a user