📄 y.out
字号:
0 $accept : program $end
1 program : statement
2 | program statement
3 statement : comment return
4 | label ':' comment return
5 | label ':' ws instruction comment return
6 | ws instruction comment return
7 label : 'L' number
8 number : number1
9 | '-' number1
10 number1 : number1 digit
11 | digit
12 digit : '0'
13 | '1'
14 | '2'
15 | '3'
16 | '4'
17 | '5'
18 | '6'
19 | '7'
20 | '8'
21 | '9'
22 ws : separator
23 | ws separator
24 separator : ' '
25 | '\t'
26 instruction : halt_instr
27 | nop_instr
28 | trap_instr
29 | add_instr
30 | sub_instr
31 | mul_instr
32 | div_instr
33 | sti_instr
34 | ldi_instr
35 | lda_instr
36 | ldr_instr
37 | bze_instr
38 | bnz_instr
39 | bra_instr
40 | bal_instr
41 | db_instr
42 halt_instr : halt_op
43 nop_instr : nop_op
44 trap_instr : trap_op
45 add_instr : add_op ws reg ',' reg
46 sub_instr : sub_op ws reg ',' reg
47 mul_instr : mul_op ws reg ',' reg
48 div_instr : div_op ws reg ',' reg
49 sti_instr : sti_op ws reg ',' offset '(' reg ')'
50 | sti_op ws reg ',' label
51 ldi_instr : ldi_op ws offset '(' reg ')' ',' reg
52 | ldi_op ws label ',' reg
53 lda_instr : lda_op ws offset '(' reg ')' ',' reg
54 | lda_op ws label ',' reg
55 ldr_instr : ldr_op ws reg ',' reg
56 bze_instr : bze_op ws offset
57 | bze_op ws label
58 bnz_instr : bnz_op ws offset
59 | bnz_op ws label
60 bra_instr : bra_op ws offset
61 | bra_op ws label
62 bal_instr : bal_op ws reg ',' reg
63 db_instr : db_op ws number
64 halt_op : 'H' 'A' 'L' 'T'
65 nop_op : 'N' 'O' 'P'
66 trap_op : 'T' 'R' 'A' 'P'
67 add_op : 'A' 'D' 'D'
68 sub_op : 'S' 'U' 'B'
69 mul_op : 'M' 'U' 'L'
70 div_op : 'D' 'I' 'V'
71 sti_op : 'S' 'T' 'I'
72 ldi_op : 'L' 'D' 'I'
73 lda_op : 'L' 'D' 'A'
74 ldr_op : 'L' 'D' 'R'
75 bze_op : 'B' 'Z' 'E'
76 bnz_op : 'B' 'N' 'Z'
77 bra_op : 'B' 'R' 'A'
78 bal_op : 'B' 'A' 'L'
79 db_op : 'D' 'B'
80 reg : 'R' number
81 offset : number
82 comment : text_comment
83 | ws text_comment
84 |
85 text_comment : text_comment char
86 | '\\'
87 char : separator
88 | 'a'
89 | 'b'
90 | 'c'
91 | 'd'
92 | 'e'
93 | 'f'
94 | 'g'
95 | 'h'
96 | 'i'
97 | 'j'
98 | 'k'
99 | 'l'
100 | 'm'
101 | 'n'
102 | 'o'
103 | 'p'
104 | 'q'
105 | 'r'
106 | 's'
107 | 't'
108 | 'u'
109 | 'v'
110 | 'w'
111 | 'x'
112 | 'y'
113 | 'z'
114 | 'A'
115 | 'B'
116 | 'C'
117 | 'D'
118 | 'E'
119 | 'F'
120 | 'G'
121 | 'H'
122 | 'I'
123 | 'J'
124 | 'K'
125 | 'L'
126 | 'M'
127 | 'N'
128 | 'O'
129 | 'P'
130 | 'Q'
131 | 'R'
132 | 'S'
133 | 'T'
134 | 'U'
135 | 'V'
136 | 'W'
137 | 'X'
138 | 'Y'
139 | 'Z'
140 | '0'
141 | '1'
142 | '2'
143 | '3'
144 | '4'
145 | '5'
146 | '6'
147 | '7'
148 | '8'
149 | '9'
150 | '!'
151 | '"'
152 | '#'
153 | '$'
154 | '%'
155 | '&'
156 | '\''
157 | '('
158 | ')'
159 | '='
160 | '-'
161 | '~'
162 | '^'
163 | '\\'
164 | '|'
165 | '@'
166 | '{'
167 | '['
168 | '`'
169 | '_'
170 | '+'
171 | ';'
172 | ':'
173 | '*'
174 | '}'
175 | ']'
176 | '<'
177 | ','
178 | '>'
179 | '.'
180 | '?'
181 | '/'
182 return : '\n'
state 0
$accept : . program $end (0)
comment : . (84)
'L' shift 1
' ' shift 2
'\t' shift 3
'\\' shift 4
'\n' reduce 84
program goto 5
statement goto 6
comment goto 7
label goto 8
ws goto 9
separator goto 10
text_comment goto 11
state 1
label : 'L' . number (7)
'-' shift 12
'0' shift 13
'1' shift 14
'2' shift 15
'3' shift 16
'4' shift 17
'5' shift 18
'6' shift 19
'7' shift 20
'8' shift 21
'9' shift 22
. error
number goto 23
number1 goto 24
digit goto 25
state 2
separator : ' ' . (24)
. reduce 24
state 3
separator : '\t' . (25)
. reduce 25
state 4
text_comment : '\\' . (86)
. reduce 86
state 5
$accept : program . $end (0)
program : program . statement (2)
comment : . (84)
$end accept
'L' shift 1
' ' shift 2
'\t' shift 3
'\\' shift 4
'\n' reduce 84
statement goto 26
comment goto 7
label goto 8
ws goto 9
separator goto 10
text_comment goto 11
state 6
program : statement . (1)
. reduce 1
state 7
statement : comment . return (3)
'\n' shift 27
. error
return goto 28
state 8
statement : label . ':' comment return (4)
statement : label . ':' ws instruction comment return (5)
':' shift 29
. error
state 9
statement : ws . instruction comment return (6)
ws : ws . separator (23)
comment : ws . text_comment (83)
'L' shift 30
' ' shift 2
'\t' shift 3
'H' shift 31
'A' shift 32
'T' shift 33
'N' shift 34
'D' shift 35
'S' shift 36
'B' shift 37
'M' shift 38
'\\' shift 4
. error
instruction goto 39
separator goto 40
halt_instr goto 41
nop_instr goto 42
trap_instr goto 43
add_instr goto 44
sub_instr goto 45
mul_instr goto 46
div_instr goto 47
sti_instr goto 48
ldi_instr goto 49
lda_instr goto 50
ldr_instr goto 51
bze_instr goto 52
bnz_instr goto 53
bra_instr goto 54
bal_instr goto 55
db_instr goto 56
halt_op goto 57
nop_op goto 58
trap_op goto 59
add_op goto 60
sub_op goto 61
mul_op goto 62
div_op goto 63
sti_op goto 64
ldi_op goto 65
lda_op goto 66
ldr_op goto 67
bze_op goto 68
bnz_op goto 69
bra_op goto 70
bal_op goto 71
db_op goto 72
text_comment goto 73
state 10
ws : separator . (22)
. reduce 22
state 11
comment : text_comment . (82)
text_comment : text_comment . char (85)
':' shift 74
'L' shift 75
'-' shift 76
'0' shift 77
'1' shift 78
'2' shift 79
'3' shift 80
'4' shift 81
'5' shift 82
'6' shift 83
'7' shift 84
'8' shift 85
'9' shift 86
' ' shift 2
'\t' shift 3
',' shift 87
'(' shift 88
')' shift 89
'H' shift 90
'A' shift 91
'T' shift 92
'N' shift 93
'O' shift 94
'P' shift 95
'R' shift 96
'D' shift 97
'S' shift 98
'U' shift 99
'B' shift 100
'M' shift 101
'I' shift 102
'V' shift 103
'Z' shift 104
'E' shift 105
'\\' shift 106
'a' shift 107
'b' shift 108
'c' shift 109
'd' shift 110
'e' shift 111
'f' shift 112
'g' shift 113
'h' shift 114
'i' shift 115
'j' shift 116
'k' shift 117
'l' shift 118
'm' shift 119
'n' shift 120
'o' shift 121
'p' shift 122
'q' shift 123
'r' shift 124
's' shift 125
't' shift 126
'u' shift 127
'v' shift 128
'w' shift 129
'x' shift 130
'y' shift 131
'z' shift 132
'C' shift 133
'F' shift 134
'G' shift 135
'J' shift 136
'K' shift 137
'Q' shift 138
'W' shift 139
'X' shift 140
'Y' shift 141
'!' shift 142
'"' shift 143
'#' shift 144
'$' shift 145
'%' shift 146
'&' shift 147
'\'' shift 148
'=' shift 149
'~' shift 150
'^' shift 151
'|' shift 152
'@' shift 153
'{' shift 154
'[' shift 155
'`' shift 156
'_' shift 157
'+' shift 158
';' shift 159
'*' shift 160
'}' shift 161
']' shift 162
'<' shift 163
'>' shift 164
'.' shift 165
'?' shift 166
'/' shift 167
'\n' reduce 82
separator goto 168
char goto 169
state 12
number : '-' . number1 (9)
'0' shift 13
'1' shift 14
'2' shift 15
'3' shift 16
'4' shift 17
'5' shift 18
'6' shift 19
'7' shift 20
'8' shift 21
'9' shift 22
. error
number1 goto 170
digit goto 25
state 13
digit : '0' . (12)
. reduce 12
state 14
digit : '1' . (13)
. reduce 13
state 15
digit : '2' . (14)
. reduce 14
state 16
digit : '3' . (15)
. reduce 15
state 17
digit : '4' . (16)
. reduce 16
state 18
digit : '5' . (17)
. reduce 17
state 19
digit : '6' . (18)
. reduce 18
state 20
digit : '7' . (19)
. reduce 19
state 21
digit : '8' . (20)
. reduce 20
state 22
digit : '9' . (21)
. reduce 21
state 23
label : 'L' number . (7)
. reduce 7
state 24
number : number1 . (8)
number1 : number1 . digit (10)
'0' shift 13
'1' shift 14
'2' shift 15
'3' shift 16
'4' shift 17
'5' shift 18
'6' shift 19
'7' shift 20
'8' shift 21
'9' shift 22
':' reduce 8
' ' reduce 8
'\t' reduce 8
',' reduce 8
'(' reduce 8
')' reduce 8
'\\' reduce 8
'\n' reduce 8
digit goto 171
state 25
number1 : digit . (11)
. reduce 11
state 26
program : program statement . (2)
. reduce 2
state 27
return : '\n' . (182)
. reduce 182
state 28
statement : comment return . (3)
. reduce 3
state 29
statement : label ':' . comment return (4)
statement : label ':' . ws instruction comment return (5)
comment : . (84)
' ' shift 2
'\t' shift 3
'\\' shift 4
'\n' reduce 84
comment goto 172
ws goto 173
separator goto 10
text_comment goto 11
state 30
ldi_op : 'L' . 'D' 'I' (72)
lda_op : 'L' . 'D' 'A' (73)
ldr_op : 'L' . 'D' 'R' (74)
'D' shift 174
. error
state 31
halt_op : 'H' . 'A' 'L' 'T' (64)
'A' shift 175
. error
state 32
add_op : 'A' . 'D' 'D' (67)
'D' shift 176
. error
state 33
trap_op : 'T' . 'R' 'A' 'P' (66)
'R' shift 177
. error
state 34
nop_op : 'N' . 'O' 'P' (65)
'O' shift 178
. error
state 35
div_op : 'D' . 'I' 'V' (70)
db_op : 'D' . 'B' (79)
'B' shift 179
'I' shift 180
. error
state 36
sub_op : 'S' . 'U' 'B' (68)
sti_op : 'S' . 'T' 'I' (71)
'T' shift 181
'U' shift 182
. error
state 37
bze_op : 'B' . 'Z' 'E' (75)
bnz_op : 'B' . 'N' 'Z' (76)
bra_op : 'B' . 'R' 'A' (77)
bal_op : 'B' . 'A' 'L' (78)
'A' shift 183
'N' shift 184
'R' shift 185
'Z' shift 186
. error
state 38
mul_op : 'M' . 'U' 'L' (69)
'U' shift 187
. error
state 39
statement : ws instruction . comment return (6)
comment : . (84)
' ' shift 2
'\t' shift 3
'\\' shift 4
'\n' reduce 84
comment goto 188
ws goto 189
separator goto 10
text_comment goto 11
state 40
ws : ws separator . (23)
. reduce 23
state 41
instruction : halt_instr . (26)
. reduce 26
state 42
instruction : nop_instr . (27)
. reduce 27
state 43
instruction : trap_instr . (28)
. reduce 28
state 44
instruction : add_instr . (29)
. reduce 29
state 45
instruction : sub_instr . (30)
. reduce 30
state 46
instruction : mul_instr . (31)
. reduce 31
state 47
instruction : div_instr . (32)
. reduce 32
state 48
instruction : sti_instr . (33)
. reduce 33
state 49
instruction : ldi_instr . (34)
. reduce 34
state 50
instruction : lda_instr . (35)
. reduce 35
state 51
instruction : ldr_instr . (36)
. reduce 36
state 52
instruction : bze_instr . (37)
. reduce 37
state 53
instruction : bnz_instr . (38)
. reduce 38
state 54
instruction : bra_instr . (39)
. reduce 39
state 55
instruction : bal_instr . (40)
. reduce 40
state 56
instruction : db_instr . (41)
. reduce 41
state 57
halt_instr : halt_op . (42)
. reduce 42
state 58
nop_instr : nop_op . (43)
. reduce 43
state 59
trap_instr : trap_op . (44)
. reduce 44
state 60
add_instr : add_op . ws reg ',' reg (45)
' ' shift 2
'\t' shift 3
. error
ws goto 190
separator goto 10
state 61
sub_instr : sub_op . ws reg ',' reg (46)
' ' shift 2
'\t' shift 3
. error
ws goto 191
separator goto 10
state 62
mul_instr : mul_op . ws reg ',' reg (47)
' ' shift 2
'\t' shift 3
. error
ws goto 192
separator goto 10
state 63
div_instr : div_op . ws reg ',' reg (48)
' ' shift 2
'\t' shift 3
. error
ws goto 193
separator goto 10
state 64
sti_instr : sti_op . ws reg ',' offset '(' reg ')' (49)
sti_instr : sti_op . ws reg ',' label (50)
' ' shift 2
'\t' shift 3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -