From: Brendan Hansen Date: Fri, 15 May 2020 03:15:10 +0000 (-0500) Subject: Pushing changes at end of day X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=aeb1c9b449ebe41c30c4abdf3e4583c39d28868c;p=onyx.git Pushing changes at end of day --- 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 40b5131c..70fbd91f 100755 Binary files a/onyx and b/onyx differ