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

📄 y.output

📁 针对“虎书”中的tiger语言写的语法分析器 根据书中对tiger语言的描述写了72条文法
💻 OUTPUT
📖 第 1 页 / 共 5 页
字号:
   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 + -