-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathLL1文法_2.txt
68 lines (59 loc) · 1.56 KB
/
LL1文法_2.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
S :=HEAD VS MAIN
HEAD := 133 401 HEAD| $ float int double
VS:= VS_A VS_B VS |$ int
VS_A := TYPE var
VS_B := VAR_DE_ | VS_C
VS_C := (F_PA) VS_D
VS_D := ;| {FUN_B}
FUN_B := VAR_DE STATE
MAIN := int main {FUN_B}
F_PA := TYPE var (F_PA_)
F_PA_ := ;F_PA | $ )
VAR_DE := TYPE var VAR_DE_ VAR_DE | $ var for while if } { return
VAR_DE_ := ;| = OB;
STATE := B_STATE STATE |$ }
B_STATE := A_S | CY_S | FU_S |RE_S|IF_S|MUL_S
A_S := var = OP_S;
OP_S := OB OP OB
OB := var | const
OP := +|-|*|/|%
RE_S := return OB;
FU_S := var(PA);
PA := OB PA_|$ )
PA_ := ,PA|$ )
MUL_S :={FUN_B}
CY_S := while (CON) MUL_S|do MUL_S while (CON)|for(FOR1 CON; FOR_3)MUL_S
FOR1 := A_S|;
FOR3 := var = OP_S|$ )
IF_S := if(CON) MUL_S IF_S_
IF_S_ := else MUL_S | $ var for while if } { return
CON := !var | OB CON_
CON_ := < OB|> OB| == OB | >= OB| <=OB | $ )
TYPE := float|int|double
A_S 赋值语句
B_STATE 基本语句
const 常量
CON 条件
CY_S 循环语句
FUN_B 函数主体
FU_S 函数调用
HEAD 头文件
IF_S 条件语句
MAIN 主函数
MUL_S 复合语句
OB 操作数
OP 运算符
OP_S 运算
PA 参数(函数调用)
RE_S 返回语句
S 程序
STATE 语句
TYPE 类型
VAR 变量名
VAR_DE 变量定义
VS 外部定义
语句不包括单个变量以及无赋值表达式
无字符串分析
无数组的分析
非终结符后面添加“_”是为了保证这些语句的LL(1)性 FOR1、FOR2为了满足LL(1)性
return 返回值不包含函数调用语句