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

📄 grm.err

📁 tiger编译器的Java实现
💻 ERR
📖 第 1 页 / 共 5 页
字号:
Opening files...
Parsing specification from standard input...
Checking specification...
Warning: Terminal "COMM" was declared but never used
Warning: Non terminal "array" was declared but never used
Building parse tables...
  Computing non-terminal nullability...
  Computing first sets...
  Building state machine...
  Filling in tables...
*** Shift/Reduce conflict found in state #59
  between type_declarations ::= type_declaration (*) 
  and     type_declaration ::= (*) TYPE ID EQ type 
  under symbol TYPE
  Resolved in favor of shifting.
*** Shift/Reduce conflict found in state #53
  between function_declarations ::= function_declaration (*) 
  and     function_declaration ::= (*) FUNCTION ID LPAREN type_fields RPAREN COLON ID EQ expression 
  and     function_declaration ::= (*) FUNCTION ID LPAREN RPAREN COLON ID EQ expression 
  and     function_declaration ::= (*) FUNCTION ID LPAREN type_fields RPAREN EQ expression 
  and     function_declaration ::= (*) FUNCTION ID LPAREN RPAREN EQ expression 
  under symbol FUNCTION
  Resolved in favor of shifting.
  Checking for non-reduced productions...
*** Production "type_field ::= ID COLON ID " never reduced
Writing parser...
===== Terminals =====
[0]EOF [1]error [2]COMMA [3]COLON [4]SEMICOLON 
[5]LPAREN [6]RPAREN [7]LBRACK [8]RBRACK [9]LBRACE 
[10]RBRACE [11]DOT [12]PLUS [13]MINUS [14]TIMES 
[15]DIVIDE [16]EQ [17]NEQ [18]LT [19]LE 
[20]GT [21]GE [22]AND [23]OR [24]ASSIGN 
[25]ARRAY [26]IF [27]THEN [28]ELSE [29]WHILE 
[30]FOR [31]TO [32]DO [33]LET [34]IN 
[35]END [36]OF [37]BREAK [38]NIL [39]FUNCTION 
[40]VAR [41]TYPE [42]UMINUS [43]COMM [44]ID 
[45]STRING [46]INT 

===== Non terminals =====
[0]$START [1]program [2]expression [3]declaration_lists [4]declaration_list 
[5]type_declaration [6]variable_declaration [7]function_declaration [8]type_declarations [9]function_declarations 
[10]type [11]type_fields [12]type_field [13]expr_list [14]field_list 
[15]expr_seq [16]lvalue [17]array 

===== Productions =====
[0] $START ::= program EOF 
[1] program ::= expression 
[2] declaration_lists ::= 
[3] declaration_lists ::= declaration_list declaration_lists 
[4] declaration_list ::= type_declarations 
[5] declaration_list ::= variable_declaration 
[6] declaration_list ::= function_declarations 
[7] type_declarations ::= type_declaration 
[8] type_declarations ::= type_declaration type_declarations 
[9] type_declaration ::= TYPE ID EQ type 
[10] type ::= ID 
[11] type ::= LBRACE type_fields RBRACE 
[12] type ::= ARRAY OF ID 
[13] type_fields ::= ID COLON ID 
[14] type_fields ::= ID COLON ID COMMA type_fields 
[15] type_field ::= ID COLON ID 
[16] function_declarations ::= function_declaration 
[17] function_declarations ::= function_declaration function_declarations 
[18] function_declaration ::= FUNCTION ID LPAREN type_fields RPAREN EQ expression 
[19] function_declaration ::= FUNCTION ID LPAREN type_fields RPAREN COLON ID EQ expression 
[20] function_declaration ::= FUNCTION ID LPAREN RPAREN EQ expression 
[21] function_declaration ::= FUNCTION ID LPAREN RPAREN COLON ID EQ expression 
[22] variable_declaration ::= VAR ID ASSIGN expression 
[23] variable_declaration ::= VAR ID COLON ID ASSIGN expression 
[24] expression ::= STRING 
[25] expression ::= INT 
[26] expression ::= NIL 
[27] expression ::= expression AND expression 
[28] expression ::= expression OR expression 
[29] expression ::= expression NEQ expression 
[30] expression ::= expression EQ expression 
[31] expression ::= expression GE expression 
[32] expression ::= expression GT expression 
[33] expression ::= expression LE expression 
[34] expression ::= expression LT expression 
[35] expression ::= expression MINUS expression 
[36] expression ::= expression PLUS expression 
[37] expression ::= expression TIMES expression 
[38] expression ::= expression DIVIDE expression 
[39] expression ::= MINUS expression 
[40] expression ::= lvalue 
[41] expression ::= lvalue ASSIGN expression 
[42] expression ::= ID LPAREN expr_list RPAREN 
[43] expression ::= ID LPAREN RPAREN 
[44] expression ::= LPAREN expr_seq RPAREN 
[45] expression ::= LPAREN RPAREN 
[46] expression ::= ID LBRACE field_list RBRACE 
[47] expression ::= ID LBRACE RBRACE 
[48] expression ::= ID LBRACK expression RBRACK OF expression 
[49] expression ::= WHILE expression DO expression 
[50] expression ::= FOR ID ASSIGN expression TO expression DO expression 
[51] expression ::= BREAK 
[52] expression ::= LET declaration_lists IN expr_seq END 
[53] expression ::= IF expression THEN expression 
[54] expression ::= IF expression THEN expression ELSE expression 
[55] expr_seq ::= expression 
[56] expr_seq ::= expression SEMICOLON expr_seq 
[57] expr_list ::= expression 
[58] expr_list ::= expression COMMA expr_list 
[59] field_list ::= ID EQ expression 
[60] field_list ::= ID EQ expression COMMA field_list 
[61] lvalue ::= ID 
[62] lvalue ::= ID LBRACK expression RBRACK 
[63] lvalue ::= lvalue DOT ID 
[64] lvalue ::= lvalue LBRACK expression RBRACK 

===== Viable Prefix Recognizer =====
START lalr_state [0]: {  [expression ::= (*) FOR ID ASSIGN expression TO expression DO expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) lvalue ASSIGN expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) expression GT expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [lvalue ::= (*) lvalue LBRACK expression RBRACK , {EOF LBRACK DOT PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR ASSIGN }]  [expression ::= (*) ID LBRACE field_list RBRACE , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) expression TIMES expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) expression OR expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [program ::= (*) expression , {EOF }]  [expression ::= (*) BREAK , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) ID LPAREN expr_list RPAREN , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) expression LE expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) STRING , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) ID LBRACE RBRACE , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) expression DIVIDE expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) expression NEQ expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [lvalue ::= (*) ID , {EOF LBRACK DOT PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR ASSIGN }]  [expression ::= (*) LET declaration_lists IN expr_seq END , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) ID LPAREN RPAREN , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) expression LT expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) INT , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) ID LBRACK expression RBRACK OF expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) MINUS expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) expression EQ expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [lvalue ::= (*) ID LBRACK expression RBRACK , {EOF LBRACK DOT PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR ASSIGN }]  [expression ::= (*) IF expression THEN expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) LPAREN expr_seq RPAREN , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) expression MINUS expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) NIL , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) WHILE expression DO expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) lvalue , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [expression ::= (*) expression GE expression , {EOF PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR }]  [lvalue ::= (*) lvalue DOT ID , {EOF LBRACK DOT PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE AND OR ASSIGN }]

⌨️ 快捷键说明

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