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

📄 y.output

📁 简单实现C--语言的编译器
💻 OUTPUT
📖 第 1 页 / 共 2 页
字号:
   0  $accept : program $end

   1  program : M declar_list

   2  M :

   3  declar_list : declar_list declar
   4              | declar

   5  declar : var_declar
   6         | fun_declar

   7  var_declar : type_spec ID ';'
   8             | type_spec ID '[' NUM ']' ';'
   9             | type_spec '*' ID ';'
  10             | type_spec '*' ID '[' NUM ']' ';'

  11  type_spec : INT
  12            | VOID
  13            | CHAR
  14            | error

  15  fun_declar : type_spec fun_tag '(' LL params ')' comp_stmt
  16             | type_spec fun_tag '(' LL params ')' ';'

  17  LL :

  18  fun_tag : callconvent ID
  19          | ID

  20  params : param_list
  21         | VOID

  22  param_list : param_list ',' param
  23             | param

  24  param : type_spec ID
  25        | type_spec '*' ID
  26        | type_spec ID '[' ']'

  27  comp_stmt : '{' local_declars stmt_list '}'

  28  local_declars : local_declars var_declar
  29                |

  30  stmt_list : stmt_list stmt
  31            |

  32  stmt : expr_stmt
  33       | comp_stmt
  34       | if_stmt
  35       | while_stmt
  36       | return_stmt

  37  expr_stmt : expr ';'
  38            | ';'

  39  if_stmt : IF '(' expr ')' stmt
  40          | IF '(' expr ')' stmt ELSE stmt

  41  while_stmt : WHILE '(' expr ')' stmt

  42  return_stmt : RETURN ';'
  43              | RETURN expr ';'

  44  expr : var '=' expr
  45       | simple_expr

  46  var : ID
  47      | ID '[' expr ']'

  48  simple_expr : add_expr relop add_expr
  49              | add_expr

  50  add_expr : add_expr addop term
  51           | term

  52  term : term mulop unary_expr
  53       | unary_expr

  54  unary_expr : unaryop unary_expr
  55             | factor

  56  factor : '(' expr ')'
  57         | var
  58         | call
  59         | NUM
  60         | STRING_LITERAL
  61         | CHAR_LITERAL

  62  call : ID '(' args ')'

  63  args : arg_list
  64       |

  65  arg_list : arg_list ',' expr
  66           | expr

  67  callconvent : CDECL
  68              | STDCALL

  69  addop : '+'
  70        | '-'

  71  relop : LE
  72        | LT
  73        | GT
  74        | GE
  75        | EQ
  76        | NE

  77  mulop : '*'
  78        | '/'
  79        | '%'

  80  unaryop : '!'
  81          | '-'

state 0
	$accept : . program $end  (0)
	M : .  (2)

	.  reduce 2

	program  goto 1
	M  goto 2


state 1
	$accept : program . $end  (0)

	$end  accept


state 2
	program : M . declar_list  (1)

	error  shift 3
	INT  shift 4
	VOID  shift 5
	CHAR  shift 6
	.  error

	type_spec  goto 7
	var_declar  goto 8
	fun_declar  goto 9
	declar_list  goto 10
	declar  goto 11


state 3
	type_spec : error .  (14)

	.  reduce 14


state 4
	type_spec : INT .  (11)

	.  reduce 11


state 5
	type_spec : VOID .  (12)

	.  reduce 12


state 6
	type_spec : CHAR .  (13)

	.  reduce 13


state 7
	var_declar : type_spec . ID ';'  (7)
	var_declar : type_spec . ID '[' NUM ']' ';'  (8)
	var_declar : type_spec . '*' ID ';'  (9)
	var_declar : type_spec . '*' ID '[' NUM ']' ';'  (10)
	fun_declar : type_spec . fun_tag '(' LL params ')' comp_stmt  (15)
	fun_declar : type_spec . fun_tag '(' LL params ')' ';'  (16)

	ID  shift 12
	CDECL  shift 13
	STDCALL  shift 14
	'*'  shift 15
	.  error

	callconvent  goto 16
	fun_tag  goto 17


state 8
	declar : var_declar .  (5)

	.  reduce 5


state 9
	declar : fun_declar .  (6)

	.  reduce 6


state 10
	program : M declar_list .  (1)
	declar_list : declar_list . declar  (3)

	error  shift 3
	INT  shift 4
	VOID  shift 5
	CHAR  shift 6
	$end  reduce 1

	type_spec  goto 7
	var_declar  goto 8
	fun_declar  goto 9
	declar  goto 18


state 11
	declar_list : declar .  (4)

	.  reduce 4


state 12
	var_declar : type_spec ID . ';'  (7)
	var_declar : type_spec ID . '[' NUM ']' ';'  (8)
	fun_tag : ID .  (19)

	';'  shift 19
	'['  shift 20
	'('  reduce 19


state 13
	callconvent : CDECL .  (67)

	.  reduce 67


state 14
	callconvent : STDCALL .  (68)

	.  reduce 68


state 15
	var_declar : type_spec '*' . ID ';'  (9)
	var_declar : type_spec '*' . ID '[' NUM ']' ';'  (10)

	ID  shift 21
	.  error


state 16
	fun_tag : callconvent . ID  (18)

	ID  shift 22
	.  error


state 17
	fun_declar : type_spec fun_tag . '(' LL params ')' comp_stmt  (15)
	fun_declar : type_spec fun_tag . '(' LL params ')' ';'  (16)

	'('  shift 23
	.  error


state 18
	declar_list : declar_list declar .  (3)

	.  reduce 3


state 19
	var_declar : type_spec ID ';' .  (7)

	.  reduce 7


state 20
	var_declar : type_spec ID '[' . NUM ']' ';'  (8)

	NUM  shift 24
	.  error


state 21
	var_declar : type_spec '*' ID . ';'  (9)
	var_declar : type_spec '*' ID . '[' NUM ']' ';'  (10)

	';'  shift 25
	'['  shift 26
	.  error


state 22
	fun_tag : callconvent ID .  (18)

	.  reduce 18


state 23
	fun_declar : type_spec fun_tag '(' . LL params ')' comp_stmt  (15)
	fun_declar : type_spec fun_tag '(' . LL params ')' ';'  (16)
	LL : .  (17)

	.  reduce 17

	LL  goto 27


state 24
	var_declar : type_spec ID '[' NUM . ']' ';'  (8)

	']'  shift 28
	.  error


state 25
	var_declar : type_spec '*' ID ';' .  (9)

	.  reduce 9


state 26
	var_declar : type_spec '*' ID '[' . NUM ']' ';'  (10)

	NUM  shift 29
	.  error


state 27
	fun_declar : type_spec fun_tag '(' LL . params ')' comp_stmt  (15)
	fun_declar : type_spec fun_tag '(' LL . params ')' ';'  (16)

	error  shift 3
	INT  shift 4
	VOID  shift 30
	CHAR  shift 6
	.  error

	type_spec  goto 31
	params  goto 32
	param_list  goto 33
	param  goto 34


state 28
	var_declar : type_spec ID '[' NUM ']' . ';'  (8)

	';'  shift 35
	.  error


state 29
	var_declar : type_spec '*' ID '[' NUM . ']' ';'  (10)

	']'  shift 36
	.  error


state 30
	type_spec : VOID .  (12)
	params : VOID .  (21)

	ID  reduce 12
	'*'  reduce 12
	')'  reduce 21


state 31
	param : type_spec . ID  (24)
	param : type_spec . '*' ID  (25)
	param : type_spec . ID '[' ']'  (26)

	ID  shift 37
	'*'  shift 38
	.  error


state 32
	fun_declar : type_spec fun_tag '(' LL params . ')' comp_stmt  (15)
	fun_declar : type_spec fun_tag '(' LL params . ')' ';'  (16)

	')'  shift 39
	.  error


state 33
	params : param_list .  (20)
	param_list : param_list . ',' param  (22)

	','  shift 40
	')'  reduce 20


state 34
	param_list : param .  (23)

	.  reduce 23


state 35
	var_declar : type_spec ID '[' NUM ']' ';' .  (8)

	.  reduce 8


state 36
	var_declar : type_spec '*' ID '[' NUM ']' . ';'  (10)

	';'  shift 41
	.  error


state 37
	param : type_spec ID .  (24)
	param : type_spec ID . '[' ']'  (26)

	'['  shift 42
	')'  reduce 24
	','  reduce 24


state 38
	param : type_spec '*' . ID  (25)

	ID  shift 43
	.  error


state 39
	fun_declar : type_spec fun_tag '(' LL params ')' . comp_stmt  (15)
	fun_declar : type_spec fun_tag '(' LL params ')' . ';'  (16)

	';'  shift 44
	'{'  shift 45
	.  error

	comp_stmt  goto 46


state 40
	param_list : param_list ',' . param  (22)

	error  shift 3
	INT  shift 4
	VOID  shift 5
	CHAR  shift 6
	.  error

	type_spec  goto 31
	param  goto 47


state 41
	var_declar : type_spec '*' ID '[' NUM ']' ';' .  (10)

	.  reduce 10


state 42
	param : type_spec ID '[' . ']'  (26)

	']'  shift 48
	.  error


state 43
	param : type_spec '*' ID .  (25)

	.  reduce 25


state 44
	fun_declar : type_spec fun_tag '(' LL params ')' ';' .  (16)

	.  reduce 16


state 45
	comp_stmt : '{' . local_declars stmt_list '}'  (27)
	local_declars : .  (29)

	.  reduce 29

	local_declars  goto 49


state 46
	fun_declar : type_spec fun_tag '(' LL params ')' comp_stmt .  (15)

	.  reduce 15


state 47
	param_list : param_list ',' param .  (22)

	.  reduce 22


state 48
	param : type_spec ID '[' ']' .  (26)

	.  reduce 26


state 49
	comp_stmt : '{' local_declars . stmt_list '}'  (27)
	local_declars : local_declars . var_declar  (28)
	stmt_list : .  (31)

	error  shift 3
	INT  shift 4
	VOID  shift 5
	CHAR  shift 6
	ID  reduce 31
	NUM  reduce 31
	IF  reduce 31
	WHILE  reduce 31
	RETURN  reduce 31
	STRING_LITERAL  reduce 31
	CHAR_LITERAL  reduce 31
	'-'  reduce 31
	';'  reduce 31
	'('  reduce 31
	'{'  reduce 31
	'}'  reduce 31
	'!'  reduce 31

	type_spec  goto 50
	var_declar  goto 51
	stmt_list  goto 52


state 50
	var_declar : type_spec . ID ';'  (7)
	var_declar : type_spec . ID '[' NUM ']' ';'  (8)
	var_declar : type_spec . '*' ID ';'  (9)
	var_declar : type_spec . '*' ID '[' NUM ']' ';'  (10)

	ID  shift 53
	'*'  shift 15
	.  error


state 51
	local_declars : local_declars var_declar .  (28)

	.  reduce 28


state 52
	comp_stmt : '{' local_declars stmt_list . '}'  (27)
	stmt_list : stmt_list . stmt  (30)

	ID  shift 54
	NUM  shift 55
	IF  shift 56
	WHILE  shift 57
	RETURN  shift 58
	STRING_LITERAL  shift 59
	CHAR_LITERAL  shift 60
	'-'  shift 61
	';'  shift 62
	'('  shift 63
	'{'  shift 45
	'}'  shift 64
	'!'  shift 65
	.  error

	unaryop  goto 66
	var  goto 67
	expr  goto 68
	factor  goto 69
	unary_expr  goto 70
	term  goto 71
	add_expr  goto 72
	simple_expr  goto 73
	comp_stmt  goto 74
	if_stmt  goto 75
	while_stmt  goto 76
	stmt  goto 77
	expr_stmt  goto 78
	return_stmt  goto 79
	call  goto 80


state 53
	var_declar : type_spec ID . ';'  (7)
	var_declar : type_spec ID . '[' NUM ']' ';'  (8)

	';'  shift 19
	'['  shift 20
	.  error


state 54
	var : ID .  (46)
	var : ID . '[' expr ']'  (47)
	call : ID . '(' args ')'  (62)

	'['  shift 81
	'('  shift 82
	EQ  reduce 46
	NE  reduce 46
	LT  reduce 46
	GT  reduce 46
	LE  reduce 46
	GE  reduce 46
	'='  reduce 46
	'+'  reduce 46
	'-'  reduce 46
	'*'  reduce 46
	'/'  reduce 46
	'%'  reduce 46
	';'  reduce 46
	']'  reduce 46
	')'  reduce 46
	','  reduce 46


state 55
	factor : NUM .  (59)

	.  reduce 59


state 56
	if_stmt : IF . '(' expr ')' stmt  (39)
	if_stmt : IF . '(' expr ')' stmt ELSE stmt  (40)

	'('  shift 83
	.  error


state 57
	while_stmt : WHILE . '(' expr ')' stmt  (41)

	'('  shift 84
	.  error


state 58
	return_stmt : RETURN . ';'  (42)
	return_stmt : RETURN . expr ';'  (43)

	ID  shift 54
	NUM  shift 55
	STRING_LITERAL  shift 59
	CHAR_LITERAL  shift 60
	'-'  shift 61
	';'  shift 85
	'('  shift 63
	'!'  shift 65
	.  error

	unaryop  goto 66
	var  goto 67
	expr  goto 86
	factor  goto 69
	unary_expr  goto 70
	term  goto 71
	add_expr  goto 72
	simple_expr  goto 73
	call  goto 80


state 59
	factor : STRING_LITERAL .  (60)

	.  reduce 60


state 60
	factor : CHAR_LITERAL .  (61)

	.  reduce 61


state 61
	unaryop : '-' .  (81)

	.  reduce 81


state 62
	expr_stmt : ';' .  (38)

	.  reduce 38


state 63
	factor : '(' . expr ')'  (56)

	ID  shift 54
	NUM  shift 55
	STRING_LITERAL  shift 59
	CHAR_LITERAL  shift 60
	'-'  shift 61
	'('  shift 63
	'!'  shift 65
	.  error

	unaryop  goto 66
	var  goto 67
	expr  goto 87
	factor  goto 69
	unary_expr  goto 70
	term  goto 71
	add_expr  goto 72
	simple_expr  goto 73
	call  goto 80


state 64
	comp_stmt : '{' local_declars stmt_list '}' .  (27)

	.  reduce 27


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -