90 lines
3.6 KiB
Plaintext
90 lines
3.6 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 ::= . Identifier Identifier__AssignmentStatement_0
|
|
56 Identifier__AssignmentStatement_0 ::= . AssignmentStatement
|
|
57 Identifier__AssignmentStatement_0 ::= . AssignmentStatement Identifier__AssignmentStatement_0
|
|
key: Comma_Identifier__Comma_AssignmentStatement_0
|
|
58 Comma_Identifier__Comma_AssignmentStatement_0 ::= .
|
|
59 Comma_Identifier__Comma_AssignmentStatement_0 ::= . Comma Identifier Comma_Identifier__Comma_AssignmentStatement_0
|
|
60 Comma_Identifier__Comma_AssignmentStatement_0 ::= . Comma AssignmentStatement Comma_Identifier__Comma_AssignmentStatement_0 |