📄 y.output
字号:
0 $accept : program $end
1 program : ID
2 | STRING
3 | INT
4 | NIL
5 | lvalue
6 | binary_operation_expr
7 | assign_expr
8 | function_expr
9 | paren_expr
10 | record_expr
11 | ID LBRACK program RBRACK OF program
12 | case_expr
13 | WHILE program DO program
14 | FOR ID ASSIGN program TO program DO program
15 | BREAK
16 | scope_expr
17 | LPAREN error RPAREN
18 | error SEMICOLON program
19 lvalue : ID DOT ID
20 | ID LBRACK program RBRACK
21 | lvalue DOT ID
22 | lvalue LBRACK program RBRACK
23 binary_operation_expr : program OR program
24 | program AND program
25 | program EQ program
26 | program LT program
27 | program LE program
28 | program GT program
29 | program GE program
30 | program NEQ program
31 | program PLUS program
32 | program MINUS program
33 | program TIMES program
34 | program DIVIDE program
35 | MINUS program
36 assign_expr : lvalue ASSIGN program
37 | ID ASSIGN program
38 function_expr : ID LPAREN RPAREN
39 | ID LPAREN expr_list RPAREN
40 expr_list : program
41 | program COMMA expr_list
42 paren_expr : LPAREN RPAREN
43 | LPAREN expr_seq RPAREN
44 expr_seq : program
45 | program SEMICOLON expr_seq
46 record_expr : ID LBRACE RBRACE
47 | ID LBRACE fieldexpr_list RBRACE
48 fieldexpr_list : ID EQ program
49 | ID EQ program COMMA fieldexpr_list
50 case_expr : IF program THEN program
51 | IF program THEN program ELSE program
52 scope_expr : LET dec_list IN END
53 | LET dec_list IN expr_seq END
54 dec_list : dec
55 | dec dec_list
56 dec : type_dec
57 | variable_dec
58 | function_dec
59 type_dec : TYPE ID EQ type
60 type : ID
61 | LBRACE RBRACE
62 | LBRACE field_list RBRACE
63 | ARRAY OF ID
64 field_list : ID COLON ID
65 | ID COLON ID COMMA field_list
66 variable_dec : VAR ID ASSIGN program
67 | VAR ID COLON ID ASSIGN program
68 function_dec : FUNCTION ID LPAREN RPAREN EQ program
69 | FUNCTION ID LPAREN RPAREN COLON ID EQ program
70 | FUNCTION ID LPAREN field_list RPAREN EQ program
71 | FUNCTION ID LPAREN field_list RPAREN COLON ID EQ program
state 0
$accept : . program $end (0)
error shift 1
ID shift 2
STRING shift 3
INT shift 4
LPAREN shift 5
MINUS shift 6
IF shift 7
WHILE shift 8
FOR shift 9
LET shift 10
BREAK shift 11
NIL shift 12
. error
program goto 13
lvalue goto 14
binary_operation_expr goto 15
assign_expr goto 16
function_expr goto 17
paren_expr goto 18
record_expr goto 19
case_expr goto 20
scope_expr goto 21
state 1
program : error . SEMICOLON program (18)
SEMICOLON shift 22
. error
state 2
program : ID . (1)
program : ID . LBRACK program RBRACK OF program (11)
lvalue : ID . DOT ID (19)
lvalue : ID . LBRACK program RBRACK (20)
assign_expr : ID . ASSIGN program (37)
function_expr : ID . LPAREN RPAREN (38)
function_expr : ID . LPAREN expr_list RPAREN (39)
record_expr : ID . LBRACE RBRACE (46)
record_expr : ID . LBRACE fieldexpr_list RBRACE (47)
LPAREN shift 23
LBRACK shift 24
LBRACE shift 25
DOT shift 26
ASSIGN shift 27
$end reduce 1
COMMA reduce 1
SEMICOLON reduce 1
RPAREN reduce 1
RBRACK reduce 1
RBRACE reduce 1
PLUS reduce 1
MINUS reduce 1
TIMES reduce 1
DIVIDE reduce 1
EQ reduce 1
NEQ reduce 1
LT reduce 1
LE reduce 1
GT reduce 1
GE reduce 1
AND reduce 1
OR reduce 1
THEN reduce 1
ELSE reduce 1
TO reduce 1
DO reduce 1
IN reduce 1
END reduce 1
FUNCTION reduce 1
VAR reduce 1
TYPE reduce 1
state 3
program : STRING . (2)
. reduce 2
state 4
program : INT . (3)
. reduce 3
state 5
program : LPAREN . error RPAREN (17)
paren_expr : LPAREN . RPAREN (42)
paren_expr : LPAREN . expr_seq RPAREN (43)
error shift 28
ID shift 2
STRING shift 3
INT shift 4
LPAREN shift 5
RPAREN shift 29
MINUS shift 6
IF shift 7
WHILE shift 8
FOR shift 9
LET shift 10
BREAK shift 11
NIL shift 12
. error
program goto 30
lvalue goto 14
binary_operation_expr goto 15
assign_expr goto 16
function_expr goto 17
paren_expr goto 18
record_expr goto 19
case_expr goto 20
scope_expr goto 21
expr_seq goto 31
state 6
binary_operation_expr : MINUS . program (35)
error shift 1
ID shift 2
STRING shift 3
INT shift 4
LPAREN shift 5
MINUS shift 6
IF shift 7
WHILE shift 8
FOR shift 9
LET shift 10
BREAK shift 11
NIL shift 12
. error
program goto 32
lvalue goto 14
binary_operation_expr goto 15
assign_expr goto 16
function_expr goto 17
paren_expr goto 18
record_expr goto 19
case_expr goto 20
scope_expr goto 21
state 7
case_expr : IF . program THEN program (50)
case_expr : IF . program THEN program ELSE program (51)
error shift 1
ID shift 2
STRING shift 3
INT shift 4
LPAREN shift 5
MINUS shift 6
IF shift 7
WHILE shift 8
FOR shift 9
LET shift 10
BREAK shift 11
NIL shift 12
. error
program goto 33
lvalue goto 14
binary_operation_expr goto 15
assign_expr goto 16
function_expr goto 17
paren_expr goto 18
record_expr goto 19
case_expr goto 20
scope_expr goto 21
state 8
program : WHILE . program DO program (13)
error shift 1
ID shift 2
STRING shift 3
INT shift 4
LPAREN shift 5
MINUS shift 6
IF shift 7
WHILE shift 8
FOR shift 9
LET shift 10
BREAK shift 11
NIL shift 12
. error
program goto 34
lvalue goto 14
binary_operation_expr goto 15
assign_expr goto 16
function_expr goto 17
paren_expr goto 18
record_expr goto 19
case_expr goto 20
scope_expr goto 21
state 9
program : FOR . ID ASSIGN program TO program DO program (14)
ID shift 35
. error
state 10
scope_expr : LET . dec_list IN END (52)
scope_expr : LET . dec_list IN expr_seq END (53)
FUNCTION shift 36
VAR shift 37
TYPE shift 38
. error
dec_list goto 39
dec goto 40
type_dec goto 41
variable_dec goto 42
function_dec goto 43
state 11
program : BREAK . (15)
. reduce 15
state 12
program : NIL . (4)
. reduce 4
state 13
$accept : program . $end (0)
binary_operation_expr : program . OR program (23)
binary_operation_expr : program . AND program (24)
binary_operation_expr : program . EQ program (25)
binary_operation_expr : program . LT program (26)
binary_operation_expr : program . LE program (27)
binary_operation_expr : program . GT program (28)
binary_operation_expr : program . GE program (29)
binary_operation_expr : program . NEQ program (30)
binary_operation_expr : program . PLUS program (31)
binary_operation_expr : program . MINUS program (32)
binary_operation_expr : program . TIMES program (33)
binary_operation_expr : program . DIVIDE program (34)
$end accept
PLUS shift 44
MINUS shift 45
TIMES shift 46
DIVIDE shift 47
EQ shift 48
NEQ shift 49
LT shift 50
LE shift 51
GT shift 52
GE shift 53
AND shift 54
OR shift 55
. error
state 14
program : lvalue . (5)
lvalue : lvalue . DOT ID (21)
lvalue : lvalue . LBRACK program RBRACK (22)
assign_expr : lvalue . ASSIGN program (36)
LBRACK shift 56
DOT shift 57
ASSIGN shift 58
$end reduce 5
COMMA reduce 5
SEMICOLON reduce 5
RPAREN reduce 5
RBRACK reduce 5
RBRACE reduce 5
PLUS reduce 5
MINUS reduce 5
TIMES reduce 5
DIVIDE reduce 5
EQ reduce 5
NEQ reduce 5
LT reduce 5
LE reduce 5
GT reduce 5
GE reduce 5
AND reduce 5
OR reduce 5
THEN reduce 5
ELSE reduce 5
TO reduce 5
DO reduce 5
IN reduce 5
END reduce 5
FUNCTION reduce 5
VAR reduce 5
TYPE reduce 5
state 15
program : binary_operation_expr . (6)
. reduce 6
state 16
program : assign_expr . (7)
. reduce 7
state 17
program : function_expr . (8)
. reduce 8
state 18
program : paren_expr . (9)
. reduce 9
state 19
program : record_expr . (10)
. reduce 10
state 20
program : case_expr . (12)
. reduce 12
state 21
program : scope_expr . (16)
. reduce 16
state 22
program : error SEMICOLON . program (18)
error shift 1
ID shift 2
STRING shift 3
INT shift 4
LPAREN shift 5
MINUS shift 6
IF shift 7
WHILE shift 8
FOR shift 9
LET shift 10
BREAK shift 11
NIL shift 12
. error
program goto 59
lvalue goto 14
binary_operation_expr goto 15
assign_expr goto 16
function_expr goto 17
paren_expr goto 18
record_expr goto 19
case_expr goto 20
scope_expr goto 21
state 23
function_expr : ID LPAREN . RPAREN (38)
function_expr : ID LPAREN . expr_list RPAREN (39)
error shift 1
ID shift 2
STRING shift 3
INT shift 4
LPAREN shift 5
RPAREN shift 60
MINUS shift 6
IF shift 7
WHILE shift 8
FOR shift 9
LET shift 10
BREAK shift 11
NIL shift 12
. error
program goto 61
lvalue goto 14
binary_operation_expr goto 15
assign_expr goto 16
function_expr goto 17
paren_expr goto 18
record_expr goto 19
case_expr goto 20
scope_expr goto 21
expr_list goto 62
state 24
program : ID LBRACK . program RBRACK OF program (11)
lvalue : ID LBRACK . program RBRACK (20)
error shift 1
ID shift 2
STRING shift 3
INT shift 4
LPAREN shift 5
MINUS shift 6
IF shift 7
WHILE shift 8
FOR shift 9
LET shift 10
BREAK shift 11
NIL shift 12
. error
program goto 63
lvalue goto 14
binary_operation_expr goto 15
assign_expr goto 16
function_expr goto 17
paren_expr goto 18
record_expr goto 19
case_expr goto 20
scope_expr goto 21
state 25
record_expr : ID LBRACE . RBRACE (46)
record_expr : ID LBRACE . fieldexpr_list RBRACE (47)
ID shift 64
RBRACE shift 65
. error
fieldexpr_list goto 66
state 26
lvalue : ID DOT . ID (19)
ID shift 67
. error
state 27
assign_expr : ID ASSIGN . program (37)
error shift 1
ID shift 2
STRING shift 3
INT shift 4
LPAREN shift 5
MINUS shift 6
IF shift 7
WHILE shift 8
FOR shift 9
LET shift 10
BREAK shift 11
NIL shift 12
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -