Compiler of Calc
The C# source code of the compiler Calc
is generated by bitzhuwei.GrammarFormat
.
Grammar
// 8 VnRegulations:
Additive : Additive '+' Multiplicative // [0]
| Additive '-' Multiplicative // [1]
| Multiplicative ; // [2]
Multiplicative : Multiplicative '*' Primary // [3]
| Multiplicative '/' Primary // [4]
| Primary ; // [5]
Primary : '(' Additive ')' // [6]
| 'number' ; // [7]
// 1 VtPatterns:
'number' : %%[0-9]+%% ; // [0]
Lexical Analyzer States
nullable
[0]: nullable( Additive ) = False
[1]: nullable( '+' ) = False
[2]: nullable( Multiplicative ) = False
[3]: nullable( '-' ) = False
[4]: nullable( '*' ) = False
[5]: nullable( Primary ) = False
[6]: nullable( '/' ) = False
[7]: nullable( '(' ) = False
[8]: nullable( ')' ) = False
[9]: nullable( 'number' ) = False
[10]: nullable( ) = True
FIRST
[0]: FIRST( Additive ) = { '(' 'number' }
[1]: FIRST( Multiplicative ) = { '(' 'number' }
[2]: FIRST( Primary ) = { '(' 'number' }
[3]: FIRST( '+' ) = { '+' }
[4]: FIRST( '-' ) = { '-' }
[5]: FIRST( '*' ) = { '*' }
[6]: FIRST( '/' ) = { '/' }
[7]: FIRST( '(' ) = { '(' }
[8]: FIRST( ')' ) = { ')' }
[9]: FIRST( 'number' ) = { 'number' }
[10]: FIRST( ) = { empty }
[11]: FIRST( Additive '+' Multiplicative ) = { '(' 'number' }
[12]: FIRST( Additive '-' Multiplicative ) = { '(' 'number' }
[13]: FIRST( Multiplicative '*' Primary ) = { '(' 'number' }
[14]: FIRST( Multiplicative '/' Primary ) = { '(' 'number' }
[15]: FIRST( '(' Additive ')' ) = { '(' }
FOLLOW
[0]: FOLLOW( Additive ) = { '+' '-' ')' }
[1]: FOLLOW( Multiplicative ) = { '+' '-' '*' '/' ')' }
[2]: FOLLOW( Primary ) = { '+' '-' '*' '/' ')' }
LL(1) Syntax Machine
状态 |
'+' |
'-' |
'*' |
'/' |
'(' |
')' |
'number' |
Additive |
|
|
|
|
R[0] R[1] R[2] |
|
R[0] R[1] R[2] |
Multiplicative |
|
|
|
|
R[3] R[4] R[5] |
|
R[3] R[4] R[5] |
Primary |
|
|
|
|
R[6] |
|
R[7] |
LR(0) Syntax Machine
状态 |
'+' |
'-' |
'*' |
'/' |
'(' |
')' |
'number' |
'¥' |
Additive |
Multiplicative |
Primary |
0 |
|
|
|
|
S4 |
|
S5 |
|
G1 |
G2 |
G3 |
1 |
S6 |
S7 |
|
|
|
|
|
完成 |
|
|
|
2 |
R[2] |
R[2] |
S8 R[2] |
S9 R[2] |
R[2] |
R[2] |
R[2] |
R[2] |
|
|
|
3 |
R[5] |
R[5] |
R[5] |
R[5] |
R[5] |
R[5] |
R[5] |
R[5] |
|
|
|
4 |
|
|
|
|
S4 |
|
S5 |
|
G10 |
G2 |
G3 |
5 |
R[7] |
R[7] |
R[7] |
R[7] |
R[7] |
R[7] |
R[7] |
R[7] |
|
|
|
6 |
|
|
|
|
S4 |
|
S5 |
|
|
G11 |
G3 |
7 |
|
|
|
|
S4 |
|
S5 |
|
|
G12 |
G3 |
8 |
|
|
|
|
S4 |
|
S5 |
|
|
|
G13 |
9 |
|
|
|
|
S4 |
|
S5 |
|
|
|
G14 |
10 |
S6 |
S7 |
|
|
|
S15 |
|
|
|
|
|
11 |
R[0] |
R[0] |
S8 R[0] |
S9 R[0] |
R[0] |
R[0] |
R[0] |
R[0] |
|
|
|
12 |
R[1] |
R[1] |
S8 R[1] |
S9 R[1] |
R[1] |
R[1] |
R[1] |
R[1] |
|
|
|
13 |
R[3] |
R[3] |
R[3] |
R[3] |
R[3] |
R[3] |
R[3] |
R[3] |
|
|
|
14 |
R[4] |
R[4] |
R[4] |
R[4] |
R[4] |
R[4] |
R[4] |
R[4] |
|
|
|
15 |
R[6] |
R[6] |
R[6] |
R[6] |
R[6] |
R[6] |
R[6] |
R[6] |
|
|
|
SLR(1) Syntax Machine
状态 |
'+' |
'-' |
'*' |
'/' |
'(' |
')' |
'number' |
'¥' |
Additive |
Multiplicative |
Primary |
0 |
|
|
|
|
S4 |
|
S5 |
|
G1 |
G2 |
G3 |
1 |
S6 |
S7 |
|
|
|
|
|
完成 |
|
|
|
2 |
R[2] |
R[2] |
S8 |
S9 |
|
R[2] |
|
R[2] |
|
|
|
3 |
R[5] |
R[5] |
R[5] |
R[5] |
|
R[5] |
|
|
|
|
|
4 |
|
|
|
|
S4 |
|
S5 |
|
G10 |
G2 |
G3 |
5 |
R[7] |
R[7] |
R[7] |
R[7] |
|
R[7] |
|
|
|
|
|
6 |
|
|
|
|
S4 |
|
S5 |
|
|
G11 |
G3 |
7 |
|
|
|
|
S4 |
|
S5 |
|
|
G12 |
G3 |
8 |
|
|
|
|
S4 |
|
S5 |
|
|
|
G13 |
9 |
|
|
|
|
S4 |
|
S5 |
|
|
|
G14 |
10 |
S6 |
S7 |
|
|
|
S15 |
|
|
|
|
|
11 |
R[0] |
R[0] |
S8 |
S9 |
|
R[0] |
|
R[0] |
|
|
|
12 |
R[1] |
R[1] |
S8 |
S9 |
|
R[1] |
|
R[1] |
|
|
|
13 |
R[3] |
R[3] |
R[3] |
R[3] |
|
R[3] |
|
|
|
|
|
14 |
R[4] |
R[4] |
R[4] |
R[4] |
|
R[4] |
|
|
|
|
|
15 |
R[6] |
R[6] |
R[6] |
R[6] |
|
R[6] |
|
|
|
|
|
LALR(1) Syntax Machine
状态 |
'+' |
'-' |
'*' |
'/' |
'(' |
')' |
'number' |
'¥' |
Additive |
Multiplicative |
Primary |
0 |
|
|
|
|
S4 |
|
S5 |
|
G1 |
G2 |
G3 |
1 |
S6 |
S7 |
|
|
|
|
|
完成 |
|
|
|
2 |
R[2] |
R[2] |
S8 |
S9 |
|
R[2] |
|
R[2] |
|
|
|
3 |
R[5] |
R[5] |
R[5] |
R[5] |
|
R[5] |
|
R[5] |
|
|
|
4 |
|
|
|
|
S4 |
|
S5 |
|
G10 |
G2 |
G3 |
5 |
R[7] |
R[7] |
R[7] |
R[7] |
|
R[7] |
|
R[7] |
|
|
|
6 |
|
|
|
|
S4 |
|
S5 |
|
|
G11 |
G3 |
7 |
|
|
|
|
S4 |
|
S5 |
|
|
G12 |
G3 |
8 |
|
|
|
|
S4 |
|
S5 |
|
|
|
G13 |
9 |
|
|
|
|
S4 |
|
S5 |
|
|
|
G14 |
10 |
S6 |
S7 |
|
|
|
S15 |
|
|
|
|
|
11 |
R[0] |
R[0] |
S8 |
S9 |
|
R[0] |
|
R[0] |
|
|
|
12 |
R[1] |
R[1] |
S8 |
S9 |
|
R[1] |
|
R[1] |
|
|
|
13 |
R[3] |
R[3] |
R[3] |
R[3] |
|
R[3] |
|
R[3] |
|
|
|
14 |
R[4] |
R[4] |
R[4] |
R[4] |
|
R[4] |
|
R[4] |
|
|
|
15 |
R[6] |
R[6] |
R[6] |
R[6] |
|
R[6] |
|
R[6] |
|
|
|
LR(1) Syntax Machine
状态 |
'+' |
'-' |
'*' |
'/' |
'(' |
')' |
'number' |
'¥' |
Additive |
Multiplicative |
Primary |
0 |
|
|
|
|
S4 |
|
S5 |
|
G1 |
G2 |
G3 |
1 |
S6 |
S7 |
|
|
|
|
|
完成 |
|
|
|
2 |
R[2] |
R[2] |
S8 |
S9 |
|
|
|
R[2] |
|
|
|
3 |
R[5] |
R[5] |
R[5] |
R[5] |
|
|
|
R[5] |
|
|
|
4 |
|
|
|
|
S13 |
|
S14 |
|
G10 |
G11 |
G12 |
5 |
R[7] |
R[7] |
R[7] |
R[7] |
|
|
|
R[7] |
|
|
|
6 |
|
|
|
|
S4 |
|
S5 |
|
|
G15 |
G3 |
7 |
|
|
|
|
S4 |
|
S5 |
|
|
G16 |
G3 |
8 |
|
|
|
|
S4 |
|
S5 |
|
|
|
G17 |
9 |
|
|
|
|
S4 |
|
S5 |
|
|
|
G18 |
10 |
S20 |
S21 |
|
|
|
S19 |
|
|
|
|
|
11 |
R[2] |
R[2] |
S22 |
S23 |
|
R[2] |
|
|
|
|
|
12 |
R[5] |
R[5] |
R[5] |
R[5] |
|
R[5] |
|
|
|
|
|
13 |
|
|
|
|
S13 |
|
S14 |
|
G24 |
G11 |
G12 |
14 |
R[7] |
R[7] |
R[7] |
R[7] |
|
R[7] |
|
|
|
|
|
15 |
R[0] |
R[0] |
S8 |
S9 |
|
|
|
R[0] |
|
|
|
16 |
R[1] |
R[1] |
S8 |
S9 |
|
|
|
R[1] |
|
|
|
17 |
R[3] |
R[3] |
R[3] |
R[3] |
|
|
|
R[3] |
|
|
|
18 |
R[4] |
R[4] |
R[4] |
R[4] |
|
|
|
R[4] |
|
|
|
19 |
R[6] |
R[6] |
R[6] |
R[6] |
|
|
|
R[6] |
|
|
|
20 |
|
|
|
|
S13 |
|
S14 |
|
|
G25 |
G12 |
21 |
|
|
|
|
S13 |
|
S14 |
|
|
G26 |
G12 |
22 |
|
|
|
|
S13 |
|
S14 |
|
|
|
G27 |
23 |
|
|
|
|
S13 |
|
S14 |
|
|
|
G28 |
24 |
S20 |
S21 |
|
|
|
S29 |
|
|
|
|
|
25 |
R[0] |
R[0] |
S22 |
S23 |
|
R[0] |
|
|
|
|
|
26 |
R[1] |
R[1] |
S22 |
S23 |
|
R[1] |
|
|
|
|
|
27 |
R[3] |
R[3] |
R[3] |
R[3] |
|
R[3] |
|
|
|
|
|
28 |
R[4] |
R[4] |
R[4] |
R[4] |
|
R[4] |
|
|
|
|
|
29 |
R[6] |
R[6] |
R[6] |
R[6] |
|
R[6] |
|
|
|
|
|
End
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)