diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/mylang.ebnf | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/doc/mylang.ebnf b/doc/mylang.ebnf index f84869f..04db743 100644 --- a/doc/mylang.ebnf +++ b/doc/mylang.ebnf @@ -10,25 +10,24 @@ integer = digit { digit }. boolean = join { "||" join }. join = relation { "&&" relation }. -relation = expression { ( "==" | "!=" | "<" | "<=" | ">=" | ">" ) expression }. -expression = term { ( "+" | "-" ) term }. -term = unary { ( "*" | "/" | "%" ) unary }. +relation = expression [ ( "==" | "!=" | "<" | "<=" | ">=" | ">" ) expression ]. +expression = term [ ( "+" | "-" ) term ]. +term = unary [ ( "*" | "/" | "%" ) unary ]. unary = "!" unary | "-" unary | factor. factor = "(" boolean ")" | ident | integer | "true" | "false" | function_call. -function_call = "call" ident "[" [ expression_list ] "]". - ident_list = ident { "," ident }. expression_list = boolean { "," boolean }. function_list = function { function }. statement_list = statement { statement }. function = "fun" ident "[" [ ident_list ] "]" nl statement_list "end" nl. -statement = ( if_statement | while_statement | assign_statement | return_statement | function_call ). +statement = ( if_statement | while_statement | assign_statement | return_statement | function_call ) nl. -if_statement = "if" boolean nl statement_list [ "else" nl statement_list ] "end" nl. -while_statement = "while" boolean nl statement_list "end" nl. -return_statement = "@" boolean nl. -assign_statement = ident "=" boolean nl. +if_statement = "if" boolean nl statement_list [ "else" nl statement_list ] "end". +while_statement = "while" boolean nl statement_list "end". +return_statement = "@" boolean. +assign_statement = ident "=" boolean. +function_call = "call" ident "[" [ expression_list ] "]". program = function_list. |