From 22b334a2ae009bce42a121e1c0be449bb0770313 Mon Sep 17 00:00:00 2001 From: Nathan Braswell Date: Sat, 26 Dec 2015 01:52:29 +0000 Subject: [PATCH] Fixed the parse bug. I think it's legal for the post-shift table check to be invalid and you have to account for that in the table --- stdlib/grammer.krak | 4 +++- stdlib/map.krak | 2 +- tests/test_grammer.krak | 6 +++--- tests/to_import.krak | 5 +++++ tests/to_parse.krak | 7 ++++++- 5 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 tests/to_import.krak diff --git a/stdlib/grammer.krak b/stdlib/grammer.krak index 8e54775..8e2c96a 100644 --- a/stdlib/grammer.krak +++ b/stdlib/grammer.krak @@ -598,7 +598,9 @@ obj table (Object, Serializable) { } fun get(state: int, on_symbol: symbol::symbol): vector::vector { var cleaned_symbol = clean_symbol(on_symbol) - return items[state][cleaned_symbol] + if (items[state].contains_key(cleaned_symbol)) + return items[state][cleaned_symbol] + return vector::vector() } fun get_shift(state: int, on_symbol: symbol::symbol): action { var actions = get(state, on_symbol) diff --git a/stdlib/map.krak b/stdlib/map.krak index 491b591..621c4c7 100644 --- a/stdlib/map.krak +++ b/stdlib/map.krak @@ -65,7 +65,7 @@ obj map (Object, Serializable) { var key_loc = keys.find(key) if (key_loc == -1) { io::println("trying to access nonexistant key-value!") - /*while (true) {}*/ + while (true) {} } return values.get(key_loc) } diff --git a/tests/test_grammer.krak b/tests/test_grammer.krak index bbbf8c7..33f8817 100644 --- a/tests/test_grammer.krak +++ b/tests/test_grammer.krak @@ -9,11 +9,11 @@ import tree:* import serialize:* fun main():int { - + var a.construct(): grammer - /*var file_name = string("../krakenGrammer.kgm")*/ - var file_name = string("../simplifiedKrakenGrammer.kgm") + var file_name = string("../krakenGrammer.kgm") + /*var file_name = string("../simplifiedKrakenGrammer.kgm")*/ /*var file_name = string("grammer.kgm")*/ var compiled_name = file_name + string(".comp_new") diff --git a/tests/to_import.krak b/tests/to_import.krak new file mode 100644 index 0000000..e482d61 --- /dev/null +++ b/tests/to_import.krak @@ -0,0 +1,5 @@ + +var a = 1 + + + diff --git a/tests/to_parse.krak b/tests/to_parse.krak index 68605fd..91ddd49 100644 --- a/tests/to_parse.krak +++ b/tests/to_parse.krak @@ -1 +1,6 @@ -why {} +import to_import + +fun main(): int { + return 0 +} +