Guest User

Untitled

a guest
Jul 22nd, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. ----------------
  2. EBNF for "dhigh"
  3. ----------------
  4.  
  5.  
  6. PROGRAM = DECLARATION BODY ;
  7.  
  8. DECLARATION = { TYPE IDENTIFIER ";" } ;
  9.  
  10. TYPE = "int" | "bool" | "void" ;
  11.  
  12. IDENTIFIER = {CHAR} LETTER { ( CHAR | LETTER) } ;
  13.  
  14. CHAR = LETTER | NUMBER ;
  15.  
  16. BODY = { FUNCTION } ;
  17.  
  18. FUNCTION = DECLARATION "(" { DECLARATION } ")" "{" FUNCTIONBODY "}" ;
  19.  
  20. FUNCTIONBODY = { ( ASSIGNMENT | QUERY | LOOP ) } ;
  21.  
  22. ASSIGNMENT = IDENTIFIER "=" ( { NUMBER } | BOOL | CALC ) ";" ;
  23.  
  24. CALC = ( IDENTIFIER | { NUMBER } ) CALCOP ( IDENTIFIER | { NUMBER } ) { CALCOP ( IDENTIFIER | { NUMBER } ) } ;
  25.  
  26. QUERY = "if" CONDITION { ( "AND" | "OR ) CONDITION } "{" FUNCTIONBODY "}" ;
  27.  
  28. CONDITION = "(" ( BOOL | IDENTIFIER | IDENTIFIER CONDOP ( BOOL | IDENTIFIER | { NUMBER } ) ) ")" ;
  29.  
  30. LOOP = WHILE | FOR ;
  31.  
  32. WHILE = "while" CONDITION { ( "AND" | "OR ) CONDITION } "{" FUNCTIONBODY "}" ;
  33.  
  34. WHILE = "for" "(" DECLARATION ";" CONDITION ";" ASSIGNMENT ")" "{" FUNCTIONBODY "}" ;
  35.  
  36. 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" ;
  37.  
  38. NUMBER = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
  39.  
  40. CONDOP = "==" | "!=" | ">" | "<" | ">=" | "<=" ;
  41.  
  42. CALCOP = "+" | "-" | "*" | "/" | "%" ;
  43.  
  44. BOOL = "true" | "false" ;
  45.  
  46.  
  47.  
  48. (*
  49. Comments:
  50. - Bool only int => "true" = 1, "false" != 1
  51. - "main"-method (IDENTIFIER = "main") is called as first method
  52. *)
Add Comment
Please, Sign In to add comment