A slight variation on the standard Pascal grammar with some changes for ease of parsing. Note that the nonterminals are presented in alpabetical order for ease of reference. A second section (at the end of the document) lists the nonterminals that were dropped from the grammar. I've included them for posterity. Syntax of this grammar: * Things surrounded by angle braces are nonterminals. * Things in all caps are tokens. * Sequences surrounded by braces can be repeated 0 or more times. One major change to Pascal: Zeroary function calls still require the parentheses. -------------------------------------------------------------------------------- ::= { COMMA } ::= PLUS ::= MINUS ::= OR ::= { COMMA } ::= ARRAY OPEN_BRACKET CLOSE_BRACKET OF ::= BECOMES ::= ::= { COMMA } ::= COLON ::= epsilon ::= CASE OF { SEMICOLON } END ::= BEGIN { SEMICOLON } END ::= ::= STRING ::= ID EQUALS ::= epsilon ::= CONST SEMICOLON { SEMICOLON } ::= TO ::= DOWNTO ::= ::= DOTDOT ::= epsilon ::= { COMMA } ::= epsilon ::= ::= ::= ::= ::= OPEN_PAREN CLOSE_PAREN ::= ::= ::= NOT ::= DOT ID ::= ::= SEMICOLON ::= ::= POINTER ::= FILE OF ::= { SEMICOLON } ::= ::= VAR ::= FUNCTION ::= PROCEDURE ID { COMMA ID } ::= FOR BECOMES DO ::= OPEN CLOSE ::= OPEN CLOSE ::= ::= FUNCTION ID COLON ID SEMICOLON ::= FUNCTION ID OPEN_PAREN { SEMICOLON } CLOSE_PAREN COLON SEMICOLON ::= GOTO