?? parse.v
字號:
0 $accept : program $end
1 program : declaration_list
2 declaration_list : declaration_list declaration
3 | declaration
4 declaration : var_declaration
5 | fun_declaration
6 var_declaration : type_specifier id SEMI
7 $$1 :
8 var_declaration : type_specifier id LBRACKET NUM $$1 RBRACKET SEMI
9 type_specifier : INT
10 | CHAR
11 | FLOAT
12 | VOID
13 id : ID
14 fun_declaration : type_specifier id LPAREN params RPAREN compound_stmt
15 | type_specifier id LPAREN VOID RPAREN compound_stmt
16 | type_specifier id LPAREN RPAREN compound_stmt
17 params : param_list
18 param_list : param_list COMMA param
19 | param
20 param : type_specifier id
21 | type_specifier id LBRACKET RBRACKET
22 compound_stmt : LBC local_declarations RBC
23 | LBC local_declarations statement_list RBC
24 | LBC RBC
25 | LBC statement_list RBC
26 local_declarations : local_declarations var_declaration
27 | var_declaration
28 statement_list : statement_list statement
29 | statement
30 statement : expression_stmt
31 | compound_stmt
32 | if_stmt
33 | while_stmt
34 | return_stmt
35 | assign_stmt
36 | break_stmt
37 expression_stmt : expression SEMI
38 | SEMI
39 if_stmt : IF LPAREN expression RPAREN statement ELSE statement
40 | IF LPAREN expression RPAREN statement
41 while_stmt : WHILE LPAREN expression RPAREN statement
42 return_stmt : RETURN SEMI
43 | RETURN expression SEMI
44 assign_stmt : var ASSIGN expression SEMI
45 break_stmt : BREAK SEMI
46 var : id
47 | id LBRACKET expression RBRACKET
48 expression : or_expression
49 or_expression : or_expression OR and_expression
50 | and_expression
51 and_expression : and_expression AND simple_expression
52 | simple_expression
53 simple_expression : additive_expression GE additive_expression
54 | additive_expression GT additive_expression
55 | additive_expression LE additive_expression
56 | additive_expression LT additive_expression
57 | additive_expression EQ additive_expression
58 | additive_expression NE additive_expression
59 | additive_expression
60 additive_expression : additive_expression PLUS term
61 | additive_expression MINUS term
62 | term
63 term : term TIMES factor
64 | term OVER factor
65 | factor
66 factor : LPAREN expression RPAREN
67 | var
68 | call
69 | NUM
70 | FLOATNUM
71 | CONSTCHAR
72 | NOT factor
73 call : id LPAREN args RPAREN
74 | id LPAREN RPAREN
75 args : arg_list
76 arg_list : expression COMMA arg_list
77 | expression
state 0
$accept : . program $end
INT shift 1
CHAR shift 2
FLOAT shift 3
VOID shift 4
program goto 5
declaration_list goto 6
declaration goto 7
var_declaration goto 8
fun_declaration goto 9
type_specifier goto 10
state 1
type_specifier : INT . (9)
. reduce 9
state 2
type_specifier : CHAR . (10)
. reduce 10
state 3
type_specifier : FLOAT . (11)
. reduce 11
state 4
type_specifier : VOID . (12)
. reduce 12
state 5
$accept : program . $end (0)
$end accept
state 6
program : declaration_list . (1)
declaration_list : declaration_list . declaration
INT shift 1
CHAR shift 2
FLOAT shift 3
VOID shift 4
. reduce 1
declaration goto 11
var_declaration goto 8
fun_declaration goto 9
type_specifier goto 10
state 7
declaration_list : declaration . (3)
. reduce 3
state 8
declaration : var_declaration . (4)
. reduce 4
state 9
declaration : fun_declaration . (5)
. reduce 5
state 10
var_declaration : type_specifier . id SEMI
var_declaration : type_specifier . id LBRACKET NUM $$1 RBRACKET SEMI
fun_declaration : type_specifier . id LPAREN params RPAREN compound_stmt
fun_declaration : type_specifier . id LPAREN VOID RPAREN compound_stmt
fun_declaration : type_specifier . id LPAREN RPAREN compound_stmt
ID shift 12
id goto 13
state 11
declaration_list : declaration_list declaration . (2)
. reduce 2
state 12
id : ID . (13)
. reduce 13
state 13
var_declaration : type_specifier id . SEMI
var_declaration : type_specifier id . LBRACKET NUM $$1 RBRACKET SEMI
fun_declaration : type_specifier id . LPAREN params RPAREN compound_stmt
fun_declaration : type_specifier id . LPAREN VOID RPAREN compound_stmt
fun_declaration : type_specifier id . LPAREN RPAREN compound_stmt
LBRACKET shift 14
LPAREN shift 15
SEMI shift 16
state 14
var_declaration : type_specifier id LBRACKET . NUM $$1 RBRACKET SEMI
NUM shift 17
state 15
fun_declaration : type_specifier id LPAREN . params RPAREN compound_stmt
fun_declaration : type_specifier id LPAREN . VOID RPAREN compound_stmt
fun_declaration : type_specifier id LPAREN . RPAREN compound_stmt
INT shift 1
CHAR shift 2
FLOAT shift 3
VOID shift 18
RPAREN shift 19
type_specifier goto 20
params goto 21
param_list goto 22
param goto 23
state 16
var_declaration : type_specifier id SEMI . (6)
. reduce 6
state 17
var_declaration : type_specifier id LBRACKET NUM . $$1 RBRACKET SEMI
$$1 : . (7)
. reduce 7
$$1 goto 24
state 18
type_specifier : VOID . (12)
fun_declaration : type_specifier id LPAREN VOID . RPAREN compound_stmt
RPAREN shift 25
. reduce 12
state 19
fun_declaration : type_specifier id LPAREN RPAREN . compound_stmt
LBC shift 26
compound_stmt goto 27
state 20
param : type_specifier . id
param : type_specifier . id LBRACKET RBRACKET
ID shift 12
id goto 28
state 21
fun_declaration : type_specifier id LPAREN params . RPAREN compound_stmt
RPAREN shift 29
state 22
params : param_list . (17)
param_list : param_list . COMMA param
COMMA shift 30
. reduce 17
state 23
param_list : param . (19)
. reduce 19
state 24
var_declaration : type_specifier id LBRACKET NUM $$1 . RBRACKET SEMI
RBRACKET shift 31
state 25
fun_declaration : type_specifier id LPAREN VOID RPAREN . compound_stmt
LBC shift 26
compound_stmt goto 32
state 26
compound_stmt : LBC . local_declarations RBC
compound_stmt : LBC . local_declarations statement_list RBC
compound_stmt : LBC . RBC
compound_stmt : LBC . statement_list RBC
INT shift 1
CHAR shift 2
FLOAT shift 3
VOID shift 4
NUM shift 33
FLOATNUM shift 34
CONSTCHAR shift 35
ID shift 12
IF shift 36
WHILE shift 37
BREAK shift 38
RETURN shift 39
LPAREN shift 40
LBC shift 26
RBC shift 41
SEMI shift 42
NOT shift 43
var_declaration goto 44
type_specifier goto 45
id goto 46
compound_stmt goto 47
local_declarations goto 48
statement_list goto 49
statement goto 50
expression_stmt goto 51
if_stmt goto 52
while_stmt goto 53
return_stmt goto 54
assign_stmt goto 55
break_stmt goto 56
expression goto 57
var goto 58
or_expression goto 59
and_expression goto 60
simple_expression goto 61
additive_expression goto 62
term goto 63
factor goto 64
call goto 65
state 27
fun_declaration : type_specifier id LPAREN RPAREN compound_stmt . (16)
. reduce 16
state 28
param : type_specifier id . (20)
param : type_specifier id . LBRACKET RBRACKET
LBRACKET shift 66
. reduce 20
state 29
fun_declaration : type_specifier id LPAREN params RPAREN . compound_stmt
LBC shift 26
compound_stmt goto 67
state 30
param_list : param_list COMMA . param
INT shift 1
CHAR shift 2
FLOAT shift 3
VOID shift 4
type_specifier goto 20
param goto 68
state 31
var_declaration : type_specifier id LBRACKET NUM $$1 RBRACKET . SEMI
SEMI shift 69
state 32
fun_declaration : type_specifier id LPAREN VOID RPAREN compound_stmt . (15)
. reduce 15
state 33
factor : NUM . (69)
. reduce 69
state 34
factor : FLOATNUM . (70)
. reduce 70
state 35
factor : CONSTCHAR . (71)
. reduce 71
state 36
if_stmt : IF . LPAREN expression RPAREN statement ELSE statement
if_stmt : IF . LPAREN expression RPAREN statement
LPAREN shift 70
state 37
while_stmt : WHILE . LPAREN expression RPAREN statement
LPAREN shift 71
state 38
break_stmt : BREAK . SEMI
SEMI shift 72
state 39
return_stmt : RETURN . SEMI
return_stmt : RETURN . expression SEMI
NUM shift 33
FLOATNUM shift 34
CONSTCHAR shift 35
ID shift 12
LPAREN shift 40
SEMI shift 73
NOT shift 43
id goto 46
expression goto 74
var goto 75
or_expression goto 59
and_expression goto 60
simple_expression goto 61
additive_expression goto 62
term goto 63
factor goto 64
call goto 65
state 40
factor : LPAREN . expression RPAREN
NUM shift 33
FLOATNUM shift 34
CONSTCHAR shift 35
ID shift 12
LPAREN shift 40
NOT shift 43
id goto 46
expression goto 76
var goto 75
or_expression goto 59
and_expression goto 60
simple_expression goto 61
additive_expression goto 62
term goto 63
factor goto 64
call goto 65
state 41
compound_stmt : LBC RBC . (24)
. reduce 24
state 42
expression_stmt : SEMI . (38)
. reduce 38
state 43
factor : NOT . factor
NUM shift 33
FLOATNUM shift 34
CONSTCHAR shift 35
ID shift 12
LPAREN shift 40
NOT shift 43
id goto 46
var goto 75
factor goto 77
call goto 65
state 44
local_declarations : var_declaration . (27)
. reduce 27
state 45
var_declaration : type_specifier . id SEMI
var_declaration : type_specifier . id LBRACKET NUM $$1 RBRACKET SEMI
ID shift 12
id goto 78
state 46
var : id . (46)
var : id . LBRACKET expression RBRACKET
call : id . LPAREN args RPAREN
call : id . LPAREN RPAREN
LBRACKET shift 79
LPAREN shift 80
. reduce 46
state 47
statement : compound_stmt . (31)
. reduce 31
state 48
compound_stmt : LBC local_declarations . RBC
compound_stmt : LBC local_declarations . statement_list RBC
local_declarations : local_declarations . var_declaration
INT shift 1
CHAR shift 2
FLOAT shift 3
VOID shift 4
NUM shift 33
FLOATNUM shift 34
CONSTCHAR shift 35
ID shift 12
IF shift 36
WHILE shift 37
BREAK shift 38
RETURN shift 39
LPAREN shift 40
LBC shift 26
RBC shift 81
SEMI shift 42
NOT shift 43
var_declaration goto 82
type_specifier goto 45
id goto 46
compound_stmt goto 47
statement_list goto 83
statement goto 50
expression_stmt goto 51
if_stmt goto 52
while_stmt goto 53
return_stmt goto 54
assign_stmt goto 55
break_stmt goto 56
expression goto 57
var goto 58
or_expression goto 59
and_expression goto 60
simple_expression goto 61
additive_expression goto 62
term goto 63
factor goto 64
call goto 65
state 49
compound_stmt : LBC statement_list . RBC
statement_list : statement_list . statement
NUM shift 33
FLOATNUM shift 34
CONSTCHAR shift 35
ID shift 12
IF shift 36
WHILE shift 37
BREAK shift 38
RETURN shift 39
LPAREN shift 40
LBC shift 26
RBC shift 84
SEMI shift 42
NOT shift 43
id goto 46
compound_stmt goto 47
statement goto 85
expression_stmt goto 51
if_stmt goto 52
while_stmt goto 53
return_stmt goto 54
assign_stmt goto 55
break_stmt goto 56
expression goto 57
var goto 58
or_expression goto 59
and_expression goto 60
simple_expression goto 61
additive_expression goto 62
term goto 63
factor goto 64
call goto 65
state 50
statement_list : statement . (29)
. reduce 29
state 51
statement : expression_stmt . (30)
. reduce 30
state 52
statement : if_stmt . (32)
. reduce 32
state 53
statement : while_stmt . (33)
. reduce 33
state 54
statement : return_stmt . (34)
. reduce 34
state 55
statement : assign_stmt . (35)
. reduce 35
state 56
statement : break_stmt . (36)
. reduce 36
state 57
expression_stmt : expression . SEMI
SEMI shift 86
state 58
assign_stmt : var . ASSIGN expression SEMI
factor : var . (67)
ASSIGN shift 87
. reduce 67
state 59
expression : or_expression . (48)
or_expression : or_expression . OR and_expression
OR shift 88
. reduce 48
state 60
or_expression : and_expression . (50)
and_expression : and_expression . AND simple_expression
AND shift 89
. reduce 50
state 61
and_expression : simple_expression . (52)
. reduce 52
state 62
simple_expression : additive_expression . GE additive_expression
simple_expression : additive_expression . GT additive_expression
simple_expression : additive_expression . LE additive_expression
simple_expression : additive_expression . LT additive_expression
simple_expression : additive_expression . EQ additive_expression
simple_expression : additive_expression . NE additive_expression
simple_expression : additive_expression . (59)
additive_expression : additive_expression . PLUS term
additive_expression : additive_expression . MINUS term
EQ shift 90
LT shift 91
LE shift 92
GT shift 93
GE shift 94
NE shift 95
PLUS shift 96
MINUS shift 97
. reduce 59
state 63
additive_expression : term . (62)
term : term . TIMES factor
term : term . OVER factor
TIMES shift 98
OVER shift 99
. reduce 62
state 64
term : factor . (65)
. reduce 65
state 65
factor : call . (68)
. reduce 68
state 66
param : type_specifier id LBRACKET . RBRACKET
RBRACKET shift 100
state 67
fun_declaration : type_specifier id LPAREN params RPAREN compound_stmt . (14)
. reduce 14
state 68
param_list : param_list COMMA param . (18)
. reduce 18
state 69
var_declaration : type_specifier id LBRACKET NUM $$1 RBRACKET SEMI . (8)
. reduce 8
state 70
if_stmt : IF LPAREN . expression RPAREN statement ELSE statement
if_stmt : IF LPAREN . expression RPAREN statement
NUM shift 33
FLOATNUM shift 34
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -