[feature] 再见,编译原理
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
文法:
|
||||
key: Program
|
||||
0 程序 ::= . 语句列表
|
||||
key: StatementList
|
||||
1 语句列表 ::= . { Statement_0 }
|
||||
key: IfStatement
|
||||
2 判断语句 ::= . If 条件部分 部分判断语句 Else 语句
|
||||
3 判断语句 ::= . If 条件部分 语句
|
||||
key: PartIfStatement
|
||||
4 部分判断语句 ::= . If 条件部分 部分判断语句 Else 部分判断语句
|
||||
5 部分判断语句 ::= . 无判断语句
|
||||
key: ConditionPart
|
||||
6 条件部分 ::= . ( 条件 )
|
||||
key: Condition
|
||||
7 条件 ::= . 条件表达式 LogicalOperator_ConditionalExpression_0
|
||||
key: ConditionalExpression
|
||||
8 条件表达式 ::= . 表达式 运算符 表达式
|
||||
9 条件表达式 ::= . 表达式
|
||||
key: Expression
|
||||
10 表达式 ::= . 项 AddLike_Term_0
|
||||
key: Statement
|
||||
11 语句 ::= . 判断语句
|
||||
12 语句 ::= . 无判断语句
|
||||
key: NoIfStatement
|
||||
13 无判断语句 ::= . 赋值语句 ;
|
||||
14 无判断语句 ::= . 变量定义 ;
|
||||
15 无判断语句 ::= . { Statement_1 }
|
||||
16 无判断语句 ::= . 常量定义 ;
|
||||
17 无判断语句 ::= . ;
|
||||
key: AssignmentStatement
|
||||
18 赋值语句 ::= . 标识符 = 表达式
|
||||
key: Term
|
||||
19 项 ::= . 因子 MultiplyLike_Factor_0
|
||||
key: ConstantDefinition
|
||||
20 常量定义 ::= . Const 变量定义
|
||||
key: VariableDefinition
|
||||
21 变量定义 ::= . 类型 Identifier__AssignmentStatement_0 Comma_Identifier__Comma_AssignmentStatement_0
|
||||
key: Type
|
||||
22 类型 ::= . Int
|
||||
23 类型 ::= . Char
|
||||
key: Factor
|
||||
24 因子 ::= . 标识符
|
||||
25 因子 ::= . 数字
|
||||
26 因子 ::= . 字符
|
||||
27 因子 ::= . ( 表达式 )
|
||||
key: AddLike
|
||||
28 类加运算符 ::= . +
|
||||
29 类加运算符 ::= . -
|
||||
key: MultiplyLike
|
||||
30 类乘运算符 ::= . *
|
||||
31 类乘运算符 ::= . /
|
||||
32 类乘运算符 ::= . %
|
||||
key: Number
|
||||
33 数字 ::= . 无符号数字
|
||||
34 数字 ::= . - 无符号数字
|
||||
35 数字 ::= . + 无符号数字
|
||||
key: Operator
|
||||
36 运算符 ::= . EqualTo
|
||||
37 运算符 ::= . NotEqualTo
|
||||
38 运算符 ::= . LessThan
|
||||
39 运算符 ::= . GreaterThan
|
||||
40 运算符 ::= . LessThanOrEqual
|
||||
41 运算符 ::= . GreaterThanOrEqual
|
||||
key: LogicalOperator
|
||||
42 逻辑运算符 ::= . And
|
||||
43 逻辑运算符 ::= . Or
|
||||
key: Statement_0
|
||||
44 Statement_0 ::= .
|
||||
45 Statement_0 ::= . 语句 Statement_0
|
||||
key: LogicalOperator_ConditionalExpression_0
|
||||
46 LogicalOperator_ConditionalExpression_0 ::= .
|
||||
47 LogicalOperator_ConditionalExpression_0 ::= . 逻辑运算符 条件表达式 LogicalOperator_ConditionalExpression_0
|
||||
key: AddLike_Term_0
|
||||
48 AddLike_Term_0 ::= .
|
||||
49 AddLike_Term_0 ::= . 类加运算符 项 AddLike_Term_0
|
||||
key: Statement_1
|
||||
50 Statement_1 ::= .
|
||||
51 Statement_1 ::= . 语句 Statement_1
|
||||
key: MultiplyLike_Factor_0
|
||||
52 MultiplyLike_Factor_0 ::= .
|
||||
53 MultiplyLike_Factor_0 ::= . 类乘运算符 因子 MultiplyLike_Factor_0
|
||||
key: Identifier__AssignmentStatement_0
|
||||
54 Identifier__AssignmentStatement_0 ::= . 标识符
|
||||
55 Identifier__AssignmentStatement_0 ::= . 赋值语句
|
||||
key: Comma_Identifier__Comma_AssignmentStatement_0
|
||||
56 Comma_Identifier__Comma_AssignmentStatement_0 ::= .
|
||||
57 Comma_Identifier__Comma_AssignmentStatement_0 ::= . 逗号 标识符 Comma_Identifier__Comma_AssignmentStatement_0
|
||||
58 Comma_Identifier__Comma_AssignmentStatement_0 ::= . 逗号 赋值语句 Comma_Identifier__Comma_AssignmentStatement_0
|
||||
@@ -1,12 +1,4 @@
|
||||
{
|
||||
int a =1*9+2;
|
||||
if(a>9){
|
||||
a=a+1;
|
||||
if(9>1){
|
||||
a=10;
|
||||
}
|
||||
a=2+2;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
const int a = 5;
|
||||
|
||||
}
|
||||
@@ -93,8 +93,8 @@ LogicalOperator {
|
||||
Plus { "+" }
|
||||
Minus { "-" }
|
||||
Multiply { "*" }
|
||||
Modulo { "%" }
|
||||
Divide { "/" }
|
||||
Modulo { "%" }
|
||||
LParen { "(" }
|
||||
RParen { ")" }
|
||||
LBrace { "{" }
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
AddLike: 类加运算符 #
|
||||
AssignmentStatement: 赋值语句 #
|
||||
Char: Char #
|
||||
Character: 字符 #
|
||||
Comma: 逗号 #
|
||||
Condition: 条件 #
|
||||
ConditionalExpression: 条件表达式 #
|
||||
ConditionPart: 条件部分 #
|
||||
ConstantDefinition: 常量定义 #
|
||||
Const: Const #
|
||||
Divide: / #
|
||||
Else: Else #
|
||||
Equal: = #
|
||||
Expression: 表达式 #
|
||||
Factor: 因子 #
|
||||
Identifier: 标识符 #
|
||||
If: If #
|
||||
IfStatement: 判断语句 #
|
||||
Int: Int #
|
||||
LBrace: { #
|
||||
LParen: ( #
|
||||
Minus: - #
|
||||
Modulo: % #
|
||||
Multiply: * #
|
||||
MultiplyLike: 类乘运算符 #
|
||||
NoIfStatement: 无判断语句 #
|
||||
Number: 数字 #
|
||||
Operator: 运算符 #
|
||||
PartIfStatement: 部分判断语句 #
|
||||
Plus: + #
|
||||
Program: 程序 #
|
||||
RBrace: } #
|
||||
RParen: ) #
|
||||
Semicolon: ; #
|
||||
Statement: 语句 #
|
||||
StatementList: 语句列表 #
|
||||
String: 字符串 #
|
||||
Term: 项 #
|
||||
Type: 类型 #
|
||||
UnsignedNumber: 无符号数字 #
|
||||
VariableDefinition: 变量定义 #
|
||||
Whitespace: 空白字符 #
|
||||
LogicalOperator: 逻辑运算符 #
|
||||
Reference in New Issue
Block a user