⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 y.out

📁 《编译方法》课程设计内容2.《编译方法》课程设计内容
💻 OUT
📖 第 1 页 / 共 3 页
字号:
   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 + -