diff --git a/src/schala_lang/parsing.rs b/src/schala_lang/parsing.rs index cb1ccf8..d1ef562 100644 --- a/src/schala_lang/parsing.rs +++ b/src/schala_lang/parsing.rs @@ -246,57 +246,6 @@ mod schala_tokenizer_tests { } } -/* -Schala (PROVISIONAL!!) EBNF grammar - -'' = literal, all other symbols are nonterminals - -program := (statement delimiter ?)* -delimiter := 'Newline' | ';' -statement := declaration | expression - -declaration := module | function | type_decl - -type_decl := 'type' type_format -type_format := 'alias' '=' type | type_constructor -type_constructor := capital_ident '=' type_rhs -type_rhs := struct_decl | type_variant ('|' type_variant)* -struct_decl := 'struct' '{' (ident ':' type)* '}' -type_variant := capital_ident | tuple_type | capital_ident struct_decl -tuple_type := // something like Variant(a,b) -type := // something like Type[A[b]] - -ascription := expression (':' type)+ - -function := 'fn' prototype '{' (statement)* '}' -prototype := identifier '(' identlist ')' -identlist := identifier (',' identifier)* | ε - - -declaration := FN prototype LCurlyBrace (statement)* RCurlyBrace -prototype := identifier LParen identlist RParen -identlist := Ident (Comma Ident)* | ε -exprlist := Expression (Comma Expression)* | ε -itemlist := Ident COLON Expression (Comma Ident COLON Expression)* | ε - -expression := postop_expression (op postop_expression)* -postop_expression := primary_expression postop -primary_expression := number_expr | String | identifier_expr | paren_expr | conditional_expr | while_expr | lambda_expr | list_expr | struct_expr -number_expr := (PLUS | MINUS ) number_expr | Number -identifier_expr := call_expression | Variable -list_expr := LSquareBracket exprlist RSquareBracket -struct_expr := LCurlyBrace itemlist RCurlyBrace -call_expression := Identifier LParen exprlist RParen -while_expr := WHILE primary_expression LCurlyBrace (expression delimiter)* RCurlyBrace -paren_expr := LParen expression RParen -conditional_expr := IF expression LCurlyBrace (expression delimiter)* RCurlyBrace (LCurlyBrace (expresion delimiter)* RCurlyBrace)? -lambda_expr := FN LParen identlist RParen LCurlyBrace (expression delimiter)* RCurlyBrace -lambda_call := | LParen exprlist RParen -postop := ε | LParen exprlist RParen | LBracket expression RBracket -op := '+', '-', etc. -*/ - - /* for reference, here is the scala EBNF for expressions: * see http://scala-lang.org/files/archive/spec/2.12/06-expressions.html