[feature] 再见,编译原理

This commit is contained in:
lichx
2024-12-27 01:25:50 +08:00
parent e92384f424
commit 8b1775974d
14 changed files with 352 additions and 101 deletions
@@ -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
+3 -11
View File
@@ -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;
}
+1 -1
View File
@@ -93,8 +93,8 @@ LogicalOperator {
Plus { "+" }
Minus { "-" }
Multiply { "*" }
Modulo { "%" }
Divide { "/" }
Modulo { "%" }
LParen { "(" }
RParen { ")" }
LBrace { "{" }
+43
View File
@@ -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: 逻辑运算符 #