〈程序〉∷=〈分程序〉.
〈分程序〉∷= [〈常量说明部分〉] [〈变量说明部分〉][〈过程函数说明部分〉]〈语句〉 〈常量说明部分〉∷=CONST〈常量定义〉{,〈常量定义〉} 〈常量定义〉∷=〈标识符〉=〈常量〉
〈标识符〉∷=〈字母〉{〈字母〉〈数字〉} 〈变量说明部分〉∷=VAR〈标识符列表〉:〈数据类型〉 〈数据类型〉∷=INTEGERREAL CHAR BOOL 〈过程函数说明部分〉∷=〈过程函数首部〉〈分程序〉{;〈过程函数说明部分〉}; 〈过程函数首部〉∷=PROCEDURE〈标识符〉'(‘ [〈形参列表〉] ‘)’
FUNCTION〈标识符〉'(‘[〈形参列表〉] ‘)’:〈数据类型〉 〈形参列表〉∷=〈标识符列表〉:〈数据类型〉{;〈标识符列表〉:〈数据类型〉}
〈标识符列表〉∷=〈标识符〉{,〈标识符〉} 〈语句〉∷=〈赋值语句〉〈条件语句〉〈过程调用语句〉〈当循环语句〉〈读语句〉
〈写语句〉〈复合语句〉〈空〉 〈赋值语句〉∷=〈标识符〉∶=〈表达式〉
〈条件语句〉∷=IF 〈条件〉THEN〈语句〉[ ELSE〈语句〉] 〈过程调用语句〉∷= CALL 〈标识符〉[‘(‘〈标识符列表〉’)’] 〈当循环语句〉∷=WHIE 〈条件〉DO〈语句〉 〈复合语句〉∷=BEGIN〈语句〉{;〈语句〉}END 〈条件〉∷=〈表达式〉〈关系运算符〉〈表达式〉 〈表达式〉∷=[+|-]〈项〉{〈加法运算符〉〈项〉} 〈项〉∷=〈因子〉{〈乘法运算符〉〈因子〉} 〈因子〉∷=〈标识符〉〈无符号实数〉〈无符号整数〉'(‘〈表达式〉’)’ 〈无符号整数〉∷=〈数字〉{〈数字〉} 〈无符号实数〉∷=〈无符号整数〉.〈无符号整数〉 〈加法运算符〉∷=+-
〈乘法运算符〉∷=* /
〈关系运算符〉∷=#=<<=>>= 〈字母〉∷=ab…zAB…XYZ
〈数字〉∷=012…89 〈常量〉∷=〈无符号整数〉〈无符号实数〉〈字母〉TRUEFALSE 〈读语句〉∷= READ'(‘〈标识符列表〉’)’
〈写语句〉∷= WRITE'(‘〈标识符列表〉’)’ 其中
‘< >’为非终结符。
‘::=’ 该符号的左部由右部定义,可读作“定义为”。
‘’ 表示‘或’,为左部可由多个右部定义。
‘{ }’ 表示花括号内的语法成分可以重复。在不加上下界时可重复0到任意次数,有 上下界时可重复次数的限制。
‘[ ]’ 表示方括号内的成分为任选项。
‘( )’ 表示圆括号内的成分优先。
上述符号为“元符号”, 文法用上述符号作为文法符号时需要用引号‘’括起。