CompilerDesignIFLR1/CompilerDesignIflr1/files/Grammar

88 lines
3.4 KiB
Plaintext

文法:
key: Program
0 Program ::= . StatementList
key: StatementList
1 StatementList ::= . LBrace Statement_0 RBrace
key: IfStatement
2 IfStatement ::= . If ConditionPart PartIfStatement Else Statement
3 IfStatement ::= . If ConditionPart Statement
key: PartIfStatement
4 PartIfStatement ::= . If ConditionPart PartIfStatement Else PartIfStatement
5 PartIfStatement ::= . NoIfStatement
key: ConditionPart
6 ConditionPart ::= . LParen Condition RParen
key: Condition
7 Condition ::= . ConditionalExpression LogicalOperator_ConditionalExpression_0
key: ConditionalExpression
8 ConditionalExpression ::= . Expression Operator Expression
9 ConditionalExpression ::= . Expression
key: Expression
10 Expression ::= . Term AddLike_Term_0
key: Statement
11 Statement ::= . IfStatement
12 Statement ::= . NoIfStatement
key: NoIfStatement
13 NoIfStatement ::= . AssignmentStatement Semicolon
14 NoIfStatement ::= . VariableDefinition Semicolon
15 NoIfStatement ::= . LBrace Statement_1 RBrace
16 NoIfStatement ::= . ConstantDefinition Semicolon
17 NoIfStatement ::= . Semicolon
key: AssignmentStatement
18 AssignmentStatement ::= . Identifier Equal Expression
key: Term
19 Term ::= . Factor MultiplyLike_Factor_0
key: ConstantDefinition
20 ConstantDefinition ::= . Const VariableDefinition
key: VariableDefinition
21 VariableDefinition ::= . Type Identifier__AssignmentStatement_0 Comma_Identifier__Comma_AssignmentStatement_0
key: Type
22 Type ::= . Int
23 Type ::= . Char
key: Factor
24 Factor ::= . Identifier
25 Factor ::= . Number
26 Factor ::= . Character
27 Factor ::= . LParen Expression RParen
key: AddLike
28 AddLike ::= . Plus
29 AddLike ::= . Minus
key: MultiplyLike
30 MultiplyLike ::= . Multiply
31 MultiplyLike ::= . Divide
32 MultiplyLike ::= . Modulo
key: Number
33 Number ::= . UnsignedNumber
34 Number ::= . Minus UnsignedNumber
35 Number ::= . Plus UnsignedNumber
key: Operator
36 Operator ::= . EqualTo
37 Operator ::= . NotEqualTo
38 Operator ::= . LessThan
39 Operator ::= . GreaterThan
40 Operator ::= . LessThanOrEqual
41 Operator ::= . GreaterThanOrEqual
key: LogicalOperator
42 LogicalOperator ::= . And
43 LogicalOperator ::= . Or
key: Statement_0
44 Statement_0 ::= .
45 Statement_0 ::= . Statement Statement_0
key: LogicalOperator_ConditionalExpression_0
46 LogicalOperator_ConditionalExpression_0 ::= .
47 LogicalOperator_ConditionalExpression_0 ::= . LogicalOperator ConditionalExpression LogicalOperator_ConditionalExpression_0
key: AddLike_Term_0
48 AddLike_Term_0 ::= .
49 AddLike_Term_0 ::= . AddLike Term AddLike_Term_0
key: Statement_1
50 Statement_1 ::= .
51 Statement_1 ::= . Statement Statement_1
key: MultiplyLike_Factor_0
52 MultiplyLike_Factor_0 ::= .
53 MultiplyLike_Factor_0 ::= . MultiplyLike Factor MultiplyLike_Factor_0
key: Identifier__AssignmentStatement_0
54 Identifier__AssignmentStatement_0 ::= . Identifier
55 Identifier__AssignmentStatement_0 ::= . AssignmentStatement
key: Comma_Identifier__Comma_AssignmentStatement_0
56 Comma_Identifier__Comma_AssignmentStatement_0 ::= .
57 Comma_Identifier__Comma_AssignmentStatement_0 ::= . Comma Identifier Comma_Identifier__Comma_AssignmentStatement_0
58 Comma_Identifier__Comma_AssignmentStatement_0 ::= . Comma AssignmentStatement Comma_Identifier__Comma_AssignmentStatement_0