summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorBenedikt Böhm <bb@xnull.de>2009-07-04 19:26:09 +0200
committerBenedikt Böhm <bb@xnull.de>2009-07-04 19:26:09 +0200
commitd517f267930e6c7c156bfd29f5c63bf604e9841e (patch)
tree7496dde90e41a30b546c9b65cc86c752ee754948 /doc
parent320d92e542f62473f3bc84fdf32defb5b2741fdc (diff)
downloadswppy-d517f267930e6c7c156bfd29f5c63bf604e9841e.tar.gz
swppy-d517f267930e6c7c156bfd29f5c63bf604e9841e.tar.xz
swppy-d517f267930e6c7c156bfd29f5c63bf604e9841e.zip
fix function call as statement, fix EBNF errors
Diffstat (limited to 'doc')
-rw-r--r--doc/mylang.ebnf19
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.