1: ::= program identifier ( ) #9 ; #56 #55 2: ::= identifier #13 3: ::= , identifier #13 4: ::= 5: ::= var #1 #2 6: ::= 7: ::= : #3 ; 8: ::= : #3 ; 9: ::= 10: ::= 11: ::= 12: ::= integer #4 13: ::= real #4 14: ::= #6 array [ intconstant #7 .. intconstant #7 ] of 15: ::= 16: ::= 17: ::= #1 #5 #11 18: ::= function identifier #15 : result ; #16 19: ::= procedure identifier #17 ; 20: ::= ( #19 ) #20 21: ::= 22: ::= : #21 23: ::= ; : #21 24: ::= 25: ::= begin end 26: ::= 27: ::= ; 28: ::= 29: ::= 30: ::= if #22 then 31: ::= while #24 #25 do #26 32: ::= else #27 #28 33: ::= #29 34: ::= identifier #30 35: ::= 36: ::= #53 assignop #31 37: ::= #54 38: ::= #32 [ ] #33 39: ::= #34 40: ::= #35 ( ) #51 41: ::= #36 42: ::= #37 43: ::= , #37 44: ::= 45: ::= 46: ::= relop #38 #39 47: ::= 48: ::= 49: ::= #40 #41 50: ::= addop #42 #43 51: ::= 52: ::= 53: ::= mulop #44 #45 54: ::= 55: ::= identifier #46 56: ::= #46 57: ::= ( ) 58: ::= not #47 59: ::= 60: ::= #48 61: ::= #49 ( ) #50 62: ::= #52 63: ::= unaryplus 64: ::= unaryminus 65: ::= endmarker 66: ::= intconstant 67: ::= realconstant