Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----------------
- EBNF for "dhigh"
- ----------------
- PROGRAM = DECLARATION BODY ;
- DECLARATION = { TYPE IDENTIFIER ";" } ;
- TYPE = "int" | "bool" | "void" ;
- IDENTIFIER = {CHAR} LETTER { ( CHAR | LETTER) } ;
- CHAR = LETTER | NUMBER ;
- BODY = { FUNCTION } ;
- FUNCTION = DECLARATION "(" { DECLARATION } ")" "{" FUNCTIONBODY "}" ;
- FUNCTIONBODY = { ( ASSIGNMENT | QUERY | LOOP ) } ;
- ASSIGNMENT = IDENTIFIER "=" ( { NUMBER } | BOOL | CALC ) ";" ;
- CALC = ( IDENTIFIER | { NUMBER } ) CALCOP ( IDENTIFIER | { NUMBER } ) { CALCOP ( IDENTIFIER | { NUMBER } ) } ;
- QUERY = "if" CONDITION { ( "AND" | "OR ) CONDITION } "{" FUNCTIONBODY "}" ;
- CONDITION = "(" ( BOOL | IDENTIFIER | IDENTIFIER CONDOP ( BOOL | IDENTIFIER | { NUMBER } ) ) ")" ;
- LOOP = WHILE | FOR ;
- WHILE = "while" CONDITION { ( "AND" | "OR ) CONDITION } "{" FUNCTIONBODY "}" ;
- WHILE = "for" "(" DECLARATION ";" CONDITION ";" ASSIGNMENT ")" "{" FUNCTIONBODY "}" ;
- LETTER = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" ;
- NUMBER = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
- CONDOP = "==" | "!=" | ">" | "<" | ">=" | "<=" ;
- CALCOP = "+" | "-" | "*" | "/" | "%" ;
- BOOL = "true" | "false" ;
- (*
- Comments:
- - Bool only int => "true" = 1, "false" != 1
- - "main"-method (IDENTIFIER = "main") is called as first method
- *)
Add Comment
Please, Sign In to add comment