Pushing changes at end of day
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 15 May 2020 03:15:10 +0000 (22:15 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 15 May 2020 03:15:10 +0000 (22:15 -0500)
docs/parse_grammar
onyx

index a71cd8663b6c9b6f65c1609cfd0e6a54c7e058fd..d4642989d26468e182e9f12cda84314c352be003 100644 (file)
@@ -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 (executable)
Binary files a/onyx and b/onyx differ