一、SNL上下文无关文法
1) Program:= ProgramHead:=DeclarePart:=ProgramBody
2) ProgramHead:= PROGRAM:=ProgramName
3) ProgramName:= ID
/**程序声明**/
4) DeclarePart:= TypeDecpart:=VarDecpart:=ProcDecpart
/**类型声明**/
5) TypeDecpart:= ε
6) TypeDecpart:= TypeDec
7) TypeDec:= TYPE:=TypeDecList
8) TypeDecList:= TypeId=TypeDef;TypeDecMore
9) TypeDecMore:= ε
10) TypeDecMore:= TypeDecList
11) TypeId:= ID
/**类型**/
12) TypeDef:= BaseType
13) TypeDef:= StructureType
14) TypeDef:= ID
15) BaseType:= INTEGER
16) BaseType:= CHAR1
17) StructureType:= ArrayType
18) StructureType:= RecType
19) ArrayType:= ARRAY[low..top] OF BaseType
20) Low:= INTC
21) Top:= INTC
22) RecType:= RECORD:=FieldDecList:=END
23) FieldDecList:= BaseType IdList;FieldDecMore
24) FieldDecList:= ArrayType:=IdList;FieldDecMore
25) FieldDecMore:= ε
26) FieldDecMore:= FieldDecList
27) IdList:= ID:=IdMore
28) IdMore:= ε
29) IdMore:= ,IdList
/**变量声明**/
30) VarDecpart:= ε
31) VarDecpart:= VarDec
32) VarDec:= VAR:=VarDecList
33) VarDecList:= TypeDef:=VarIdList;VarDecMore
34) VarDecMore:= ε
35) VarDecMore:= VarDecList
36) VarIdList:= ID:=VarIdMore
37) VarIdMore:= ε
38) VarIdMore:= ,VarIdList
/**过程声明**/
39) ProcDecpart:= ε
40) ProcDecpart:= ProcDec
41) ProcDec:= PROCEDURE:=ProcName(ParamList);
ProcDecPart:=ProcBody:=ProcDecMore
42) ProcDecMore:= ε