46 lines
733 B
Odin
46 lines
733 B
Odin
package main
|
|
|
|
import "core:fmt"
|
|
import "core:os"
|
|
|
|
main :: proc() {
|
|
handle: os.Handle
|
|
if len(os.args) >= 2 {
|
|
errno: os.Errno
|
|
handle, errno = os.open(os.args[1])
|
|
if errno != 0 {
|
|
fmt.printf("Error opening file\n", errno)
|
|
return
|
|
}
|
|
} else {
|
|
handle = os.stdin
|
|
}
|
|
defer os.close(handle)
|
|
|
|
data, err := os.read_entire_file_from_handle(handle)
|
|
if !err {
|
|
fmt.printf("Error reading file\n", err)
|
|
return
|
|
}
|
|
|
|
u8_arr : [dynamic]u8
|
|
for ch in data {
|
|
append(&u8_arr, u8(ch))
|
|
}
|
|
|
|
lexer := lexer_create(&u8_arr)
|
|
parser := parser_create(lexer)
|
|
|
|
ast := parser_parse(&parser)
|
|
type_check(ast, nil)
|
|
if len(g_message_list) > 0 {
|
|
for msg in g_message_list {
|
|
fmt.printf("%s\n", msg)
|
|
}
|
|
return
|
|
}
|
|
|
|
node_print(ast)
|
|
}
|
|
|