From aeb1c9b449ebe41c30c4abdf3e4583c39d28868c Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 14 May 2020 22:15:10 -0500 Subject: [PATCH] Pushing changes at end of day --- docs/parse_grammar | 20 +++++++++++++------- onyx | Bin 42848 -> 43368 bytes 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/docs/parse_grammar b/docs/parse_grammar index a71cd866..d4642989 100644 --- a/docs/parse_grammar +++ b/docs/parse_grammar @@ -1,15 +1,15 @@ Note: ~ is empty -Goal: Design the language to have no ambiguity +Goal: Design the language to have no ambiguity (so a greedy algorithm can work) SOURCE_FILE = TOP_LEVEL_STATEMENT ; SOURCE_FILE | ~ TOP_LEVEL_STATEMENT - = USE_DECLARATION + = COMMENT -- Should comments not be passed to the parser? Depends if I need to look at them. Probably not + | USE_DECLARATION | EXPORT_DECLARATION | FOREIGN_DECLARATION | TOP_LEVEL_DECLARATION - | COMMENT COMMENT = TOKEN_TYPE_COMMENT @@ -17,17 +17,20 @@ USE_DECLARATION = use TOKEN_TYPE_LITERAL_STRING EXPORT_DECLARATION = export TOP_LEVEL_DECLARATION -TOP_LEVEL_DECLARATION +FOREIGN_DECLARATION = foreign TOKEN_TYPE_LITERAL_STRING TOKEN_TYPE_LITERAL_STRING :: TOP_LEVEL_VALUE + +TOP_LEVEL_DECLARATION = TOKEN_TYPE_SYMBOL :: TOP_LEVEL_VALUE + +TOP_LEVEL_VALUE = FUNCTION_DECLARATION | STRUCT_DECLARATION - | GLOBAL_DECLARATION -FUNCTION_DECLARATION = proc TOKEN_TYPE_SYMBOL FUNCTION_TYPE BLOCK +FUNCTION_DECLARATION = proc FUNCTION_TYPE BLOCK FUNCTION_TYPE = :: ( FUNCTION_PARAMS ) -> TOKEN_TYPE_SYMBOL -- This may be too weird... -BLOCK = { STATEMENTS +BLOCK = { STATEMENTS | --- STATEMENTS = STATEMENT ; STATEMENTS | } STATEMENT @@ -70,3 +73,6 @@ COMMA_LIST(T) = T | T , COMMA_LIST(T) FUNCTION_PARAMS = COMMA_LIST(TOKEN_TYPE_SYMBOL :: TOKEN_TYPE_SYMBOL) EXPRESSION_LIST = COMMA_LIST(EXPRESSION) + +STRUCT_DECLARATION = struct { STRUCT_MEMBERS } +STRUCT_MEMBERS = COMMA_LIST(TOKEN_TYPE_SYMBOL :: TOKEN_TYPE_SYMBOL) \ No newline at end of file diff --git a/onyx b/onyx index 40b5131c991064593ef5ed7553e85cfb60b7276c..70fbd91f40f2f08e39891923682c6b1b47aeaf63 100755 GIT binary patch delta 9909 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 wqZi&@q$G9QZ~9{pZP^pi)A6)o)lQGW$Fx delta 8776 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 OQ>=;oWE%En`2PY-