Fix pl0 for EBNF syntax changes
parent
795ef0ae3b
commit
ec4f964e4f
|
@ -16,16 +16,16 @@ MEMO: number ( -- parser )
|
||||||
|
|
||||||
<EBNF
|
<EBNF
|
||||||
program = block "."
|
program = block "."
|
||||||
block = [ "CONST" ident "=" number { "," ident "=" number } ";" ]
|
block = ( "CONST" ident "=" number ( "," ident "=" number )* ";" )?
|
||||||
[ "VAR" ident { "," ident } ";" ]
|
( "VAR" ident ( "," ident )* ";" )?
|
||||||
{ "PROCEDURE" ident ";" [ block ";" ] } statement
|
( "PROCEDURE" ident ";" ( block ";" )? )* statement
|
||||||
statement = [ ident ":=" expression | "CALL" ident |
|
statement = ( ident ":=" expression | "CALL" ident |
|
||||||
"BEGIN" statement {";" statement } "END" |
|
"BEGIN" statement (";" statement )* "END" |
|
||||||
"IF" condition "THEN" statement |
|
"IF" condition "THEN" statement |
|
||||||
"WHILE" condition "DO" statement ]
|
"WHILE" condition "DO" statement )?
|
||||||
condition = "ODD" expression |
|
condition = "ODD" expression |
|
||||||
expression ("=" | "#" | "<=" | "<" | ">=" | ">") expression
|
expression ("=" | "#" | "<=" | "<" | ">=" | ">") expression
|
||||||
expression = ["+" | "-"] term {("+" | "-") term }
|
expression = ("+" | "-")? term (("+" | "-") term )*
|
||||||
term = factor {("*" | "/") factor }
|
term = factor (("*" | "/") factor )*
|
||||||
factor = ident | number | "(" expression ")"
|
factor = ident | number | "(" expression ")"
|
||||||
EBNF>
|
EBNF>
|
||||||
|
|
Loading…
Reference in New Issue