状态[0]: program[0] -> * stmt_list [0]
项目:program[0] -> * stmt_list [0]
规则:program
到达状态[1]: stmt_list[0] -> * stmt [0] [ stmt_list [1] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [8: BREAK
,关键字,BREAK] [12: CONTINUE
,关键字,CONTINUE] [21: FOR
,关键字,FOR] [23: IF
,关键字,IF] [27: RETURN
,关键字,RETURN] [40: WHILE
,关键字,WHILE] [41: VARIABLE
,关键字,VARIABLE] [43: LET
,关键字,LET] [44: CALL
,关键字,CALL] [45: IMPORT
,关键字,IMPORT] [46: EXPORT
,关键字,EXPORT] [47: YIELD
,关键字,YIELD] [48: FOREACH
,关键字,FOREACH] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [52: TRY
,关键字,TRY] [54: THROW
,关键字,THROW] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [92: SEMI
,操作符,SEMI] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:stmt_list[0] -> * stmt [0] [ stmt_list [1] ]
规则:stmt_list
到达状态[2]: stmt[0] -> * ( stmt_stmt [0] | stmt_ctrl [0] | block_stmt [0] )
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [8: BREAK
,关键字,BREAK] [12: CONTINUE
,关键字,CONTINUE] [21: FOR
,关键字,FOR] [23: IF
,关键字,IF] [27: RETURN
,关键字,RETURN] [40: WHILE
,关键字,WHILE] [41: VARIABLE
,关键字,VARIABLE] [43: LET
,关键字,LET] [44: CALL
,关键字,CALL] [45: IMPORT
,关键字,IMPORT] [46: EXPORT
,关键字,EXPORT] [47: YIELD
,关键字,YIELD] [48: FOREACH
,关键字,FOREACH] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [52: TRY
,关键字,TRY] [54: THROW
,关键字,THROW] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [92: SEMI
,操作符,SEMI] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:stmt[0] -> * ( stmt_stmt [0] | stmt_ctrl [0] | block_stmt [0] )
规则:stmt
到达状态[3]: stmt_stmt[0] -> * [ stmt_exp [0] ] SEMI
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [8: BREAK
,关键字,BREAK] [12: CONTINUE
,关键字,CONTINUE] [41: VARIABLE
,关键字,VARIABLE] [43: LET
,关键字,LET] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [92: SEMI
,操作符,SEMI] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
到达状态[4]: stmt_ctrl[0] -> * ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] )
类型:转移
指令:移进
预查:[21: FOR
,关键字,FOR] [23: IF
,关键字,IF] [27: RETURN
,关键字,RETURN] [40: WHILE
,关键字,WHILE] [45: IMPORT
,关键字,IMPORT] [46: EXPORT
,关键字,EXPORT] [47: YIELD
,关键字,YIELD] [48: FOREACH
,关键字,FOREACH] [52: TRY
,关键字,TRY] [54: THROW
,关键字,THROW]
到达状态[5]: block_stmt[0] -> * block [0]
类型:转移
指令:移进
项目:stmt_stmt[0] -> * [ stmt_exp [0] ] SEMI
规则:stmt_stmt
到达状态[6]: stmt_exp[0] -> * ( var [0] | call [0] | cycle_ctrl [0] | exp [0] )
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [8: BREAK
,关键字,BREAK] [12: CONTINUE
,关键字,CONTINUE] [41: VARIABLE
,关键字,VARIABLE] [43: LET
,关键字,LET] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
到达状态[7]: stmt_stmt[0] -> [ stmt_exp [0] ] SEMI
*
类型:匹配 => 92(92: SEMI
,操作符,SEMI)
指令:通过 [Action]
项目:stmt_ctrl[0] -> * ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] )
规则:stmt_ctrl
到达状态[8]: ret[0] -> * ( YIELD
[1] | RETURN
) [ exp [0] ] SEMI
类型:转移
指令:移进
预查:[27: RETURN
,关键字,RETURN] [47: YIELD
,关键字,YIELD]
到达状态[9]: port[0] -> * ( IMPORT
[1] | EXPORT
[2] ) LITERAL
[0] SEMI
类型:转移
指令:移进
预查:[45: IMPORT
,关键字,IMPORT] [46: EXPORT
,关键字,EXPORT]
到达状态[10]: if[0] -> * IF
LPA
exp [0] RPA
block [1] [ ELSE
( block [2] | if [3] ) ]
类型:转移
指令:移进
预查:[23: IF
,关键字,IF]
到达状态[11]: for[0] -> * FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
类型:转移
指令:移进
预查:[21: FOR
,关键字,FOR]
到达状态[12]: foreach[0] -> * FOREACH
LPA
VARIABLE
ID
[0] COLON
exp [1] RPA
block [2]
类型:转移
指令:移进
预查:[48: FOREACH
,关键字,FOREACH]
到达状态[13]: while[0] -> * WHILE
LPA
exp [0] RPA
block [1]
类型:转移
指令:移进
预查:[40: WHILE
,关键字,WHILE]
到达状态[14]: try[0] -> * TRY
block [1] CATCH
[ LPA
ID
[0] RPA
] block [2]
类型:转移
指令:移进
预查:[52: TRY
,关键字,TRY]
到达状态[15]: throw[0] -> * THROW
exp [0] SEMI
类型:转移
指令:移进
预查:[54: THROW
,关键字,THROW]
项目:block_stmt[0] -> * block [0]
规则:block_stmt
到达状态[16]: block[0] -> * LBR
[ stmt_list [0] ] RBR
类型:转移
指令:移进
预查:[100: LBR
,操作符,LBRACE]
项目:stmt_exp[0] -> * ( var [0] | call [0] | cycle_ctrl [0] | exp [0] )
规则:stmt_exp
到达状态[17]: var[0] -> * ( VARIABLE
[11] | LET
[12] ) ID
[0] [ ASSIGN
( func [1] | exp [2] ) ]
类型:转移
指令:移进
预查:[41: VARIABLE
,关键字,VARIABLE] [43: LET
,关键字,LET]
到达状态[18]: call[0] -> * CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
类型:转移
指令:移进
预查:[44: CALL
,关键字,CALL]
到达状态[19]: cycle_ctrl[0] -> * ( BREAK
[0] | CONTINUE
[0] )
类型:转移
指令:移进
预查:[8: BREAK
,关键字,BREAK] [12: CONTINUE
,关键字,CONTINUE]
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:stmt_stmt[0] -> [ stmt_exp [0] ] SEMI
*
规则:stmt_stmt
到达状态[21]: stmt[0] -> ( stmt_stmt [0] | stmt_ctrl [0] | block_stmt [0] ) *
类型:归约 => stmt[0] -> * ( stmt_stmt [0] | stmt_ctrl [0] | block_stmt [0] )
指令:翻译 => stmt_stmt 0
项目:ret[0] -> * ( YIELD
[1] | RETURN
) [ exp [0] ] SEMI
规则:ret
到达状态[22]: ret[0] -> ( YIELD
[1] | RETURN
) * [ exp [0] ] SEMI
类型:匹配 => 47(47: YIELD
,关键字,YIELD)
指令:读入 => 1
到达状态[22]: ret[0] -> ( YIELD
[1] | RETURN
) * [ exp [0] ] SEMI
类型:匹配 => 27(27: RETURN
,关键字,RETURN)
指令:通过
项目:port[0] -> * ( IMPORT
[1] | EXPORT
[2] ) LITERAL
[0] SEMI
规则:port
到达状态[23]: port[0] -> ( IMPORT
[1] | EXPORT
[2] ) * LITERAL
[0] SEMI
类型:匹配 => 45(45: IMPORT
,关键字,IMPORT)
指令:读入 => 1
到达状态[23]: port[0] -> ( IMPORT
[1] | EXPORT
[2] ) * LITERAL
[0] SEMI
类型:匹配 => 46(46: EXPORT
,关键字,EXPORT)
指令:读入 => 2
项目:if[0] -> * IF
LPA
exp [0] RPA
block [1] [ ELSE
( block [2] | if [3] ) ]
规则:if
到达状态[24]: if[0] -> IF
* LPA
exp [0] RPA
block [1] [ ELSE
( block [2] | if [3] ) ]
类型:匹配 => 23(23: IF
,关键字,IF)
指令:通过
项目:for[0] -> * FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
规则:for
到达状态[25]: for[0] -> FOR
* LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
类型:匹配 => 21(21: FOR
,关键字,FOR)
指令:通过 [Action]
项目:foreach[0] -> * FOREACH
LPA
VARIABLE
ID
[0] COLON
exp [1] RPA
block [2]
规则:foreach
到达状态[26]: foreach[0] -> FOREACH
* LPA
VARIABLE
ID
[0] COLON
exp [1] RPA
block [2]
类型:匹配 => 48(48: FOREACH
,关键字,FOREACH)
指令:通过 [Action]
项目:while[0] -> * WHILE
LPA
exp [0] RPA
block [1]
规则:while
到达状态[27]: while[0] -> WHILE
* LPA
exp [0] RPA
block [1]
类型:匹配 => 40(40: WHILE
,关键字,WHILE)
指令:通过 [Action]
项目:try[0] -> * TRY
block [1] CATCH
[ LPA
ID
[0] RPA
] block [2]
规则:try
到达状态[28]: try[0] -> TRY
* block [1] CATCH
[ LPA
ID
[0] RPA
] block [2]
类型:匹配 => 52(52: TRY
,关键字,TRY)
指令:通过
项目:throw[0] -> * THROW
exp [0] SEMI
规则:throw
到达状态[29]: throw[0] -> THROW
* exp [0] SEMI
类型:匹配 => 54(54: THROW
,关键字,THROW)
指令:通过
项目:block[0] -> * LBR
[ stmt_list [0] ] RBR
规则:block
到达状态[30]: block[0] -> LBR
* [ stmt_list [0] ] RBR
类型:匹配 => 100(100: LBR
,操作符,LBRACE)
指令:通过 [Action]
项目:var[0] -> * ( VARIABLE
[11] | LET
[12] ) ID
[0] [ ASSIGN
( func [1] | exp [2] ) ]
规则:var
到达状态[31]: var[0] -> ( VARIABLE
[11] | LET
[12] ) * ID
[0] [ ASSIGN
( func [1] | exp [2] ) ]
类型:匹配 => 41(41: VARIABLE
,关键字,VARIABLE)
指令:读入 => 11
到达状态[31]: var[0] -> ( VARIABLE
[11] | LET
[12] ) * ID
[0] [ ASSIGN
( func [1] | exp [2] ) ]
类型:匹配 => 43(43: LET
,关键字,LET)
指令:读入 => 12
项目:call[0] -> * CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
规则:call
到达状态[32]: call[0] -> CALL
[4] * ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
类型:匹配 => 44(44: CALL
,关键字,CALL)
指令:读入 => 4
项目:cycle_ctrl[0] -> * ( BREAK
[0] | CONTINUE
[0] )
规则:cycle_ctrl
到达状态[33]: cycle_ctrl[0] -> ( BREAK
[0] | CONTINUE
[0] ) *
类型:匹配 => 8(8: BREAK
,关键字,BREAK)
指令:读入 => 0
到达状态[33]: cycle_ctrl[0] -> ( BREAK
[0] | CONTINUE
[0] ) *
类型:匹配 => 12(12: CONTINUE
,关键字,CONTINUE)
指令:读入 => 0
项目:exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
规则:exp
到达状态[34]: exp01[0] -> * [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) ] exp0 [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:stmt[0] -> ( stmt_stmt [0] | stmt_ctrl [0] | block_stmt [0] ) *
规则:stmt
到达状态[35]: stmt_list[0] -> stmt [0] * [ stmt_list [1] ]
类型:归约 => stmt_list[0] -> * stmt [0] [ stmt_list [1] ]
指令:翻译 => stmt 0
项目:ret[0] -> ( YIELD
[1] | RETURN
) * [ exp [0] ] SEMI
规则:ret
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
到达状态[36]: ret[0] -> ( YIELD
[1] | RETURN
) [ exp [0] ] SEMI
*
类型:匹配 => 92(92: SEMI
,操作符,SEMI)
指令:通过
项目:port[0] -> ( IMPORT
[1] | EXPORT
[2] ) * LITERAL
[0] SEMI
规则:port
到达状态[37]: port[0] -> ( IMPORT
[1] | EXPORT
[2] ) LITERAL
[0] * SEMI
类型:匹配 => 2(2: LITERAL
,字符串,(null))
指令:读入 => 0
项目:if[0] -> IF
* LPA
exp [0] RPA
block [1] [ ELSE
( block [2] | if [3] ) ]
规则:if
到达状态[38]: if[0] -> IF
LPA
* exp [0] RPA
block [1] [ ELSE
( block [2] | if [3] ) ]
类型:匹配 => 96(96: LPA
,操作符,LPARAN)
指令:通过
项目:for[0] -> FOR
* LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
规则:for
到达状态[39]: for[0] -> FOR
LPA
* [ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
类型:匹配 => 96(96: LPA
,操作符,LPARAN)
指令:通过
项目:foreach[0] -> FOREACH
* LPA
VARIABLE
ID
[0] COLON
exp [1] RPA
block [2]
规则:foreach
到达状态[40]: foreach[0] -> FOREACH
LPA
* VARIABLE
ID
[0] COLON
exp [1] RPA
block [2]
类型:匹配 => 96(96: LPA
,操作符,LPARAN)
指令:通过
项目:while[0] -> WHILE
* LPA
exp [0] RPA
block [1]
规则:while
到达状态[41]: while[0] -> WHILE
LPA
* exp [0] RPA
block [1]
类型:匹配 => 96(96: LPA
,操作符,LPARAN)
指令:通过
项目:try[0] -> TRY
* block [1] CATCH
[ LPA
ID
[0] RPA
] block [2]
规则:try
到达状态[16]: block[0] -> * LBR
[ stmt_list [0] ] RBR
类型:转移
指令:移进
预查:[100: LBR
,操作符,LBRACE]
项目:throw[0] -> THROW
* exp [0] SEMI
规则:throw
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:block[0] -> LBR
* [ stmt_list [0] ] RBR
规则:block
到达状态[1]: stmt_list[0] -> * stmt [0] [ stmt_list [1] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [8: BREAK
,关键字,BREAK] [12: CONTINUE
,关键字,CONTINUE] [21: FOR
,关键字,FOR] [23: IF
,关键字,IF] [27: RETURN
,关键字,RETURN] [40: WHILE
,关键字,WHILE] [41: VARIABLE
,关键字,VARIABLE] [43: LET
,关键字,LET] [44: CALL
,关键字,CALL] [45: IMPORT
,关键字,IMPORT] [46: EXPORT
,关键字,EXPORT] [47: YIELD
,关键字,YIELD] [48: FOREACH
,关键字,FOREACH] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [52: TRY
,关键字,TRY] [54: THROW
,关键字,THROW] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [92: SEMI
,操作符,SEMI] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
到达状态[42]: block[0] -> LBR
[ stmt_list [0] ] RBR
*
类型:匹配 => 101(101: RBR
,操作符,RBRACE)
指令:通过 [Action]
项目:var[0] -> ( VARIABLE
[11] | LET
[12] ) * ID
[0] [ ASSIGN
( func [1] | exp [2] ) ]
规则:var
到达状态[43]: var[0] -> ( VARIABLE
[11] | LET
[12] ) ID
[0] * [ ASSIGN
( func [1] | exp [2] ) ]
类型:匹配 => 0(0: ID
,标识符,(null))
指令:读入 => 0 [Action]
项目:call[0] -> CALL
[4] * ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
规则:call
到达状态[44]: call[0] -> CALL
[4] ( LPA
* ( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
类型:匹配 => 96(96: LPA
,操作符,LPARAN)
指令:通过
到达状态[45]: call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) * LPA
[ exp_list [2] ] RPA
类型:匹配 => 0(0: ID
,标识符,(null))
指令:读入 => 1
项目:cycle_ctrl[0] -> ( BREAK
[0] | CONTINUE
[0] ) *
规则:cycle_ctrl
到达状态[46]: stmt_exp[0] -> ( var [0] | call [0] | cycle_ctrl [0] | exp [0] ) *
类型:归约 => stmt_exp[0] -> * ( var [0] | call [0] | cycle_ctrl [0] | exp [0] )
指令:翻译 => cycle_ctrl 0
项目:exp01[0] -> * [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) ] exp0 [0]
规则:exp01
到达状态[47]: exp0[0] -> * exp1 [0] [ QUERY
[4] exp0 [6] COLON
[5] exp0 [7] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:stmt_list[0] -> stmt [0] * [ stmt_list [1] ]
规则:stmt_list
到达状态[1]: stmt_list[0] -> * stmt [0] [ stmt_list [1] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [8: BREAK
,关键字,BREAK] [12: CONTINUE
,关键字,CONTINUE] [21: FOR
,关键字,FOR] [23: IF
,关键字,IF] [27: RETURN
,关键字,RETURN] [40: WHILE
,关键字,WHILE] [41: VARIABLE
,关键字,VARIABLE] [43: LET
,关键字,LET] [44: CALL
,关键字,CALL] [45: IMPORT
,关键字,IMPORT] [46: EXPORT
,关键字,EXPORT] [47: YIELD
,关键字,YIELD] [48: FOREACH
,关键字,FOREACH] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [52: TRY
,关键字,TRY] [54: THROW
,关键字,THROW] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [92: SEMI
,操作符,SEMI] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
到达状态[48]: program[0] -> stmt_list [0] *
类型:归约 => program[0] -> * stmt_list [0]
指令:翻译 => stmt_list 0
到达状态[49]: stmt_list[0] -> stmt [0] [ stmt_list [1] ] *
类型:归约 => stmt_list[0] -> stmt [0] * [ stmt_list [1] ]
指令:翻译 => stmt_list 1
到达状态[50]: block[0] -> LBR
[ stmt_list [0] ] * RBR
类型:归约 => block[0] -> LBR
* [ stmt_list [0] ] RBR
指令:翻译 => stmt_list 0
项目:ret[0] -> ( YIELD
[1] | RETURN
) [ exp [0] ] SEMI
*
规则:ret
到达状态[51]: stmt_ctrl[0] -> ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] ) *
类型:归约 => stmt_ctrl[0] -> * ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] )
指令:翻译 => ret 0
项目:port[0] -> ( IMPORT
[1] | EXPORT
[2] ) LITERAL
[0] * SEMI
规则:port
到达状态[52]: port[0] -> ( IMPORT
[1] | EXPORT
[2] ) LITERAL
[0] SEMI
*
类型:匹配 => 92(92: SEMI
,操作符,SEMI)
指令:通过
项目:if[0] -> IF
LPA
* exp [0] RPA
block [1] [ ELSE
( block [2] | if [3] ) ]
规则:if
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:for[0] -> FOR
LPA
* [ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
规则:for
到达状态[17]: var[0] -> * ( VARIABLE
[11] | LET
[12] ) ID
[0] [ ASSIGN
( func [1] | exp [2] ) ]
类型:转移
指令:移进
预查:[41: VARIABLE
,关键字,VARIABLE] [43: LET
,关键字,LET]
到达状态[53]: for[0] -> FOR
LPA
[ var [0] ] SEMI
* [ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
类型:匹配 => 92(92: SEMI
,操作符,SEMI)
指令:通过
项目:foreach[0] -> FOREACH
LPA
* VARIABLE
ID
[0] COLON
exp [1] RPA
block [2]
规则:foreach
到达状态[54]: foreach[0] -> FOREACH
LPA
VARIABLE
* ID
[0] COLON
exp [1] RPA
block [2]
类型:匹配 => 41(41: VARIABLE
,关键字,VARIABLE)
指令:通过
项目:while[0] -> WHILE
LPA
* exp [0] RPA
block [1]
规则:while
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:block[0] -> LBR
[ stmt_list [0] ] RBR
*
规则:block
到达状态[55]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] ) *
类型:归约 => func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
* ( PTR_OP
scope [3] | block [4] )
指令:翻译 => block 4
到达状态[56]: lambda[0] -> LAMBDA
[1] LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] ) *
类型:归约 => lambda[0] -> LAMBDA
[1] LPA
[ var_list [2] ] RPA
* ( PTR_OP
scope [3] | block [4] )
指令:翻译 => block 4
到达状态[57]: if[0] -> IF
LPA
exp [0] RPA
block [1] * [ ELSE
( block [2] | if [3] ) ]
类型:归约 => if[0] -> IF
LPA
exp [0] RPA
* block [1] [ ELSE
( block [2] | if [3] ) ]
指令:翻译 => block 1
到达状态[58]: if[0] -> IF
LPA
exp [0] RPA
block [1] [ ELSE
( block [2] | if [3] ) *]
类型:归约 => if[0] -> IF
LPA
exp [0] RPA
block [1] [ ELSE
* ( block [2] | if [3] ) ]
指令:翻译 => block 2
到达状态[59]: for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3] *
类型:归约 => for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
* block [3]
指令:翻译 => block 3
到达状态[60]: while[0] -> WHILE
LPA
exp [0] RPA
block [1] *
类型:归约 => while[0] -> WHILE
LPA
exp [0] RPA
* block [1]
指令:翻译 => block 1
到达状态[61]: foreach[0] -> FOREACH
LPA
VARIABLE
ID
[0] COLON
exp [1] RPA
block [2] *
类型:归约 => foreach[0] -> FOREACH
LPA
VARIABLE
ID
[0] COLON
exp [1] RPA
* block [2]
指令:翻译 => block 2
到达状态[62]: block_stmt[0] -> block [0] *
类型:归约 => block_stmt[0] -> * block [0]
指令:翻译 => block 0
到达状态[63]: try[0] -> TRY
block [1] * CATCH
[ LPA
ID
[0] RPA
] block [2]
类型:归约 => try[0] -> TRY
* block [1] CATCH
[ LPA
ID
[0] RPA
] block [2]
指令:翻译 => block 1
到达状态[64]: try[0] -> TRY
block [1] CATCH
[ LPA
ID
[0] RPA
] block [2] *
类型:归约 => try[0] -> TRY
block [1] CATCH
* [ LPA
ID
[0] RPA
] block [2]
指令:翻译 => block 2
到达状态[64]: try[0] -> TRY
block [1] CATCH
[ LPA
ID
[0] RPA
] block [2] *
类型:归约 => try[0] -> TRY
block [1] CATCH
[ LPA
ID
[0] RPA
] * block [2]
指令:翻译 => block 2
项目:var[0] -> ( VARIABLE
[11] | LET
[12] ) ID
[0] * [ ASSIGN
( func [1] | exp [2] ) ]
规则:var
到达状态[46]: stmt_exp[0] -> ( var [0] | call [0] | cycle_ctrl [0] | exp [0] ) *
类型:归约 => stmt_exp[0] -> * ( var [0] | call [0] | cycle_ctrl [0] | exp [0] )
指令:翻译 => var 0
到达状态[65]: var[0] -> ( VARIABLE
[11] | LET
[12] ) ID
[0] [ ASSIGN
* ( func [1] | exp [2] ) ]
类型:匹配 => 94(94: ASSIGN
,操作符,ASSIGN)
指令:通过
到达状态[66]: for[0] -> FOR
LPA
[ var [0] ] * SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
类型:归约 => for[0] -> FOR
LPA
* [ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
指令:翻译 => var 0
到达状态[67]: for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) *] RPA
block [3]
类型:归约 => for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
* [ ( exp [2] | var [2] ) ] RPA
block [3]
指令:翻译 => var 2
项目:call[0] -> CALL
[4] ( LPA
* ( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
规则:call
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
到达状态[68]: func[0] -> * ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:转移
指令:移进
预查:[42: FUNCTION
,关键字,FUNCTION] [47: YIELD
,关键字,YIELD]
项目:call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) * LPA
[ exp_list [2] ] RPA
规则:call
到达状态[69]: call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
* [ exp_list [2] ] RPA
类型:匹配 => 96(96: LPA
,操作符,LPARAN)
指令:通过
项目:stmt_exp[0] -> ( var [0] | call [0] | cycle_ctrl [0] | exp [0] ) *
规则:stmt_exp
到达状态[70]: stmt_stmt[0] -> [ stmt_exp [0] ] * SEMI
类型:归约 => stmt_stmt[0] -> * [ stmt_exp [0] ] SEMI
指令:翻译 => stmt_exp 0
项目:exp0[0] -> * exp1 [0] [ QUERY
[4] exp0 [6] COLON
[5] exp0 [7] ]
规则:exp0
到达状态[71]: exp1[0] -> * [ exp1 [1] ( AND_OP
[2] | OR_OP
[2] ) ] exp2 [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:program[0] -> stmt_list [0] *
规则:program
到达状态[48]: program[0] -> stmt_list [0] *
类型:结束
指令:翻译结束 => program
项目:stmt_list[0] -> stmt [0] [ stmt_list [1] ] *
规则:stmt_list
到达状态[48]: program[0] -> stmt_list [0] *
类型:归约 => program[0] -> * stmt_list [0]
指令:翻译 => stmt_list 0
到达状态[49]: stmt_list[0] -> stmt [0] [ stmt_list [1] ] *
类型:归约 => stmt_list[0] -> stmt [0] * [ stmt_list [1] ]
指令:翻译 => stmt_list 1
到达状态[50]: block[0] -> LBR
[ stmt_list [0] ] * RBR
类型:归约 => block[0] -> LBR
* [ stmt_list [0] ] RBR
指令:翻译 => stmt_list 0
项目:block[0] -> LBR
[ stmt_list [0] ] * RBR
规则:block
到达状态[42]: block[0] -> LBR
[ stmt_list [0] ] RBR
*
类型:匹配 => 101(101: RBR
,操作符,RBRACE)
指令:通过 [Action]
项目:stmt_ctrl[0] -> ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] ) *
规则:stmt_ctrl
到达状态[21]: stmt[0] -> ( stmt_stmt [0] | stmt_ctrl [0] | block_stmt [0] ) *
类型:归约 => stmt[0] -> * ( stmt_stmt [0] | stmt_ctrl [0] | block_stmt [0] )
指令:翻译 => stmt_ctrl 0
项目:port[0] -> ( IMPORT
[1] | EXPORT
[2] ) LITERAL
[0] SEMI
*
规则:port
到达状态[51]: stmt_ctrl[0] -> ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] ) *
类型:归约 => stmt_ctrl[0] -> * ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] )
指令:翻译 => port 0
项目:for[0] -> FOR
LPA
[ var [0] ] SEMI
* [ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
规则:for
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
到达状态[72]: for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
* [ ( exp [2] | var [2] ) ] RPA
block [3]
类型:匹配 => 92(92: SEMI
,操作符,SEMI)
指令:通过
项目:foreach[0] -> FOREACH
LPA
VARIABLE
* ID
[0] COLON
exp [1] RPA
block [2]
规则:foreach
到达状态[73]: foreach[0] -> FOREACH
LPA
VARIABLE
ID
[0] * COLON
exp [1] RPA
block [2]
类型:匹配 => 0(0: ID
,标识符,(null))
指令:读入 => 0 [Action]
项目:func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] ) *
规则:func
到达状态[74]: var[0] -> ( VARIABLE
[11] | LET
[12] ) ID
[0] [ ASSIGN
( func [1] | exp [2] ) *]
类型:归约 => var[0] -> ( VARIABLE
[11] | LET
[12] ) ID
[0] [ ASSIGN
* ( func [1] | exp [2] ) ]
指令:翻译 => func 1
到达状态[75]: call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) * RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
类型:归约 => call[0] -> CALL
[4] ( LPA
* ( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
指令:翻译 => func 0
项目:lambda[0] -> LAMBDA
[1] LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] ) *
规则:lambda
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:归约 => type[0] -> * ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
指令:翻译 => lambda 2
项目:if[0] -> IF
LPA
exp [0] RPA
block [1] * [ ELSE
( block [2] | if [3] ) ]
规则:if
到达状态[51]: stmt_ctrl[0] -> ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] ) *
类型:归约 => stmt_ctrl[0] -> * ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] )
指令:翻译 => if 0
到达状态[58]: if[0] -> IF
LPA
exp [0] RPA
block [1] [ ELSE
( block [2] | if [3] ) *]
类型:归约 => if[0] -> IF
LPA
exp [0] RPA
block [1] [ ELSE
* ( block [2] | if [3] ) ]
指令:翻译 => if 3
到达状态[77]: if[0] -> IF
LPA
exp [0] RPA
block [1] [ ELSE
* ( block [2] | if [3] ) ]
类型:匹配 => 16(16: ELSE
,关键字,ELSE)
指令:通过
项目:if[0] -> IF
LPA
exp [0] RPA
block [1] [ ELSE
( block [2] | if [3] ) *]
规则:if
到达状态[51]: stmt_ctrl[0] -> ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] ) *
类型:归约 => stmt_ctrl[0] -> * ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] )
指令:翻译 => if 0
到达状态[58]: if[0] -> IF
LPA
exp [0] RPA
block [1] [ ELSE
( block [2] | if [3] ) *]
类型:归约 => if[0] -> IF
LPA
exp [0] RPA
block [1] [ ELSE
* ( block [2] | if [3] ) ]
指令:翻译 => if 3
项目:for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3] *
规则:for
到达状态[51]: stmt_ctrl[0] -> ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] ) *
类型:归约 => stmt_ctrl[0] -> * ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] )
指令:翻译 => for 0
项目:while[0] -> WHILE
LPA
exp [0] RPA
block [1] *
规则:while
到达状态[51]: stmt_ctrl[0] -> ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] ) *
类型:归约 => stmt_ctrl[0] -> * ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] )
指令:翻译 => while 0
项目:foreach[0] -> FOREACH
LPA
VARIABLE
ID
[0] COLON
exp [1] RPA
block [2] *
规则:foreach
到达状态[51]: stmt_ctrl[0] -> ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] ) *
类型:归约 => stmt_ctrl[0] -> * ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] )
指令:翻译 => foreach 0
项目:block_stmt[0] -> block [0] *
规则:block_stmt
到达状态[21]: stmt[0] -> ( stmt_stmt [0] | stmt_ctrl [0] | block_stmt [0] ) *
类型:归约 => stmt[0] -> * ( stmt_stmt [0] | stmt_ctrl [0] | block_stmt [0] )
指令:翻译 => block_stmt 0
项目:try[0] -> TRY
block [1] * CATCH
[ LPA
ID
[0] RPA
] block [2]
规则:try
到达状态[78]: try[0] -> TRY
block [1] CATCH
* [ LPA
ID
[0] RPA
] block [2]
类型:匹配 => 53(53: CATCH
,关键字,CATCH)
指令:通过
项目:try[0] -> TRY
block [1] CATCH
[ LPA
ID
[0] RPA
] block [2] *
规则:try
到达状态[51]: stmt_ctrl[0] -> ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] ) *
类型:归约 => stmt_ctrl[0] -> * ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] )
指令:翻译 => try 0
项目:var[0] -> ( VARIABLE
[11] | LET
[12] ) ID
[0] [ ASSIGN
* ( func [1] | exp [2] ) ]
规则:var
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
到达状态[68]: func[0] -> * ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:转移
指令:移进
预查:[42: FUNCTION
,关键字,FUNCTION] [47: YIELD
,关键字,YIELD]
项目:for[0] -> FOR
LPA
[ var [0] ] * SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
规则:for
到达状态[53]: for[0] -> FOR
LPA
[ var [0] ] SEMI
* [ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
类型:匹配 => 92(92: SEMI
,操作符,SEMI)
指令:通过
项目:for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) *] RPA
block [3]
规则:for
到达状态[79]: for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
* block [3]
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:func[0] -> * ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
规则:func
到达状态[80]: func[0] -> ( FUNCTION
[10] | YIELD
) * [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:匹配 => 42(42: FUNCTION
,关键字,FUNCTION)
指令:读入 => 10 [Action]
到达状态[80]: func[0] -> ( FUNCTION
[10] | YIELD
) * [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:匹配 => 47(47: YIELD
,关键字,YIELD)
指令:通过 [Action]
项目:call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
* [ exp_list [2] ] RPA
规则:call
到达状态[81]: exp_list[0] -> * exp [0] [ COMMA
exp_list [1] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
到达状态[82]: call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
*
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:stmt_stmt[0] -> [ stmt_exp [0] ] * SEMI
规则:stmt_stmt
到达状态[7]: stmt_stmt[0] -> [ stmt_exp [0] ] SEMI
*
类型:匹配 => 92(92: SEMI
,操作符,SEMI)
指令:通过 [Action]
项目:exp1[0] -> * [ exp1 [1] ( AND_OP
[2] | OR_OP
[2] ) ] exp2 [0]
规则:exp1
到达状态[83]: exp2[0] -> * [ exp2 [1] ( OR
[2] | XOR
[2] | AND
[2] ) ] exp3 [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
* [ ( exp [2] | var [2] ) ] RPA
block [3]
规则:for
到达状态[17]: var[0] -> * ( VARIABLE
[11] | LET
[12] ) ID
[0] [ ASSIGN
( func [1] | exp [2] ) ]
类型:转移
指令:移进
预查:[41: VARIABLE
,关键字,VARIABLE] [43: LET
,关键字,LET]
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
到达状态[79]: for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
* block [3]
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:foreach[0] -> FOREACH
LPA
VARIABLE
ID
[0] * COLON
exp [1] RPA
block [2]
规则:foreach
到达状态[84]: foreach[0] -> FOREACH
LPA
VARIABLE
ID
[0] COLON
* exp [1] RPA
block [2]
类型:匹配 => 95(95: COLON
,操作符,COLON)
指令:通过
项目:var[0] -> ( VARIABLE
[11] | LET
[12] ) ID
[0] [ ASSIGN
( func [1] | exp [2] ) *]
规则:var
到达状态[46]: stmt_exp[0] -> ( var [0] | call [0] | cycle_ctrl [0] | exp [0] ) *
类型:归约 => stmt_exp[0] -> * ( var [0] | call [0] | cycle_ctrl [0] | exp [0] )
指令:翻译 => var 0
到达状态[66]: for[0] -> FOR
LPA
[ var [0] ] * SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
类型:归约 => for[0] -> FOR
LPA
* [ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
指令:翻译 => var 0
到达状态[67]: for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) *] RPA
block [3]
类型:归约 => for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
* [ ( exp [2] | var [2] ) ] RPA
block [3]
指令:翻译 => var 2
项目:call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) * RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
规则:call
到达状态[45]: call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) * LPA
[ exp_list [2] ] RPA
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
规则:type
到达状态[85]: exp10[0] -> [ exp10 [1] DOT
[2] ] type [0] *
类型:归约 => exp10[0] -> * [ exp10 [1] DOT
[2] ] type [0]
指令:翻译 => type 0
到达状态[85]: exp10[0] -> [ exp10 [1] DOT
[2] ] type [0] *
类型:归约 => exp10[0] -> [ exp10 [1] DOT
[2] ] * type [0]
指令:翻译 => type 0
项目:if[0] -> IF
LPA
exp [0] RPA
block [1] [ ELSE
* ( block [2] | if [3] ) ]
规则:if
到达状态[10]: if[0] -> * IF
LPA
exp [0] RPA
block [1] [ ELSE
( block [2] | if [3] ) ]
类型:转移
指令:移进
预查:[23: IF
,关键字,IF]
到达状态[16]: block[0] -> * LBR
[ stmt_list [0] ] RBR
类型:转移
指令:移进
预查:[100: LBR
,操作符,LBRACE]
项目:try[0] -> TRY
block [1] CATCH
* [ LPA
ID
[0] RPA
] block [2]
规则:try
到达状态[16]: block[0] -> * LBR
[ stmt_list [0] ] RBR
类型:转移
指令:移进
预查:[100: LBR
,操作符,LBRACE]
到达状态[86]: try[0] -> TRY
block [1] CATCH
[ LPA
* ID
[0] RPA
] block [2]
类型:匹配 => 96(96: LPA
,操作符,LPARAN)
指令:通过
项目:for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
* block [3]
规则:for
到达状态[16]: block[0] -> * LBR
[ stmt_list [0] ] RBR
类型:转移
指令:移进
预查:[100: LBR
,操作符,LBRACE]
项目:func[0] -> ( FUNCTION
[10] | YIELD
) * [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
规则:func
到达状态[87]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
* doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:匹配 => 98(98: LSQ
,操作符,LSQUARE)
指令:通过
到达状态[88]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) * LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:匹配 => 0(0: ID
,标识符,(null))
指令:读入 => 1 [Action]
到达状态[88]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) * LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:匹配 => 86(86: NOT
,操作符,BIT_NOT)
指令:读入 => 1 [Action]
项目:exp_list[0] -> * exp [0] [ COMMA
exp_list [1] ]
规则:exp_list
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
*
规则:call
到达状态[46]: stmt_exp[0] -> ( var [0] | call [0] | cycle_ctrl [0] | exp [0] ) *
类型:归约 => stmt_exp[0] -> * ( var [0] | call [0] | cycle_ctrl [0] | exp [0] )
指令:翻译 => call 0
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:归约 => type[0] -> * ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
指令:翻译 => call 1
项目:exp2[0] -> * [ exp2 [1] ( OR
[2] | XOR
[2] | AND
[2] ) ] exp3 [0]
规则:exp2
到达状态[89]: exp3[0] -> * [ exp3 [1] ( EQ_OP
[2] | NE_OP
[2] ) ] exp4 [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:foreach[0] -> FOREACH
LPA
VARIABLE
ID
[0] COLON
* exp [1] RPA
block [2]
规则:foreach
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp10[0] -> [ exp10 [1] DOT
[2] ] type [0] *
规则:exp10
到达状态[90]: exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] ) *
类型:归约 => exp9[0] -> * ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] )
指令:翻译 => exp10 0
到达状态[91]: exp10[0] -> [ exp10 [1] * DOT
[2] ] type [0]
类型:左递归
指令:左递归 => exp10 1
预查:[93: DOT
,操作符,DOT]
项目:try[0] -> TRY
block [1] CATCH
[ LPA
* ID
[0] RPA
] block [2]
规则:try
到达状态[92]: try[0] -> TRY
block [1] CATCH
[ LPA
ID
[0] * RPA
] block [2]
类型:匹配 => 0(0: ID
,标识符,(null))
指令:读入 => 0 [Action]
项目:func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
* doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
规则:func
到达状态[93]: doc_list[0] -> * LITERAL
[0] [ COMMA
doc_list [1] ]
类型:转移
指令:移进
预查:[2: LITERAL
,字符串,(null)]
项目:func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) * LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
规则:func
到达状态[94]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
* [ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:匹配 => 96(96: LPA
,操作符,LPARAN)
指令:通过
项目:exp3[0] -> * [ exp3 [1] ( EQ_OP
[2] | NE_OP
[2] ) ] exp4 [0]
规则:exp3
到达状态[95]: exp4[0] -> * [ exp4 [1] ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) ] exp5 [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] ) *
规则:exp9
到达状态[90]: exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] ) *
类型:归约 => exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) * exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] )
指令:翻译 => exp9 1
到达状态[96]: exp8[0] -> ( ( NOT_OP
[3] | NOT
[3] ) exp8 [1] | exp9 [0] ) *
类型:归约 => exp8[0] -> * ( ( NOT_OP
[3] | NOT
[3] ) exp8 [1] | exp9 [0] )
指令:翻译 => exp9 0
到达状态[97]: exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] * ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] )
类型:左递归
指令:左递归 => exp9 1
预查:[57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [98: LSQ
,操作符,LSQUARE]
项目:exp10[0] -> [ exp10 [1] * DOT
[2] ] type [0]
规则:exp10
到达状态[98]: exp10[0] -> [ exp10 [1] DOT
[2] ] * type [0]
类型:匹配 => 93(93: DOT
,操作符,DOT)
指令:读入 => 2
项目:try[0] -> TRY
block [1] CATCH
[ LPA
ID
[0] * RPA
] block [2]
规则:try
到达状态[99]: try[0] -> TRY
block [1] CATCH
[ LPA
ID
[0] RPA
] * block [2]
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:doc_list[0] -> * LITERAL
[0] [ COMMA
doc_list [1] ]
规则:doc_list
到达状态[100]: doc_list[0] -> LITERAL
[0] * [ COMMA
doc_list [1] ]
类型:匹配 => 2(2: LITERAL
,字符串,(null))
指令:读入 => 0
项目:func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
* [ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
规则:func
到达状态[101]: var_list[0] -> * ID
[0] [ COMMA
var_list [1] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)]
到达状态[102]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
* ( PTR_OP
scope [3] | block [4] )
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:exp4[0] -> * [ exp4 [1] ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) ] exp5 [0]
规则:exp4
到达状态[103]: exp5[0] -> * [ exp5 [1] ( LEFT_OP
[2] | RIGHT_OP
[2] ) ] exp6 [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp8[0] -> ( ( NOT_OP
[3] | NOT
[3] ) exp8 [1] | exp9 [0] ) *
规则:exp8
到达状态[96]: exp8[0] -> ( ( NOT_OP
[3] | NOT
[3] ) exp8 [1] | exp9 [0] ) *
类型:归约 => exp8[0] -> ( ( NOT_OP
[3] | NOT
[3] ) * exp8 [1] | exp9 [0] )
指令:翻译 => exp8 1
到达状态[104]: exp7[0] -> [ exp7 [1] ( MUL
[2] | DIV
[2] | MOD
[2] ) ] exp8 [0] *
类型:归约 => exp7[0] -> * [ exp7 [1] ( MUL
[2] | DIV
[2] | MOD
[2] ) ] exp8 [0]
指令:翻译 => exp8 0
到达状态[104]: exp7[0] -> [ exp7 [1] ( MUL
[2] | DIV
[2] | MOD
[2] ) ] exp8 [0] *
类型:归约 => exp7[0] -> [ exp7 [1] ( MUL
[2] | DIV
[2] | MOD
[2] ) *] exp8 [0]
指令:翻译 => exp8 0
项目:exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] * ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] )
规则:exp9
到达状态[105]: exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) *| exp10 [0] )
类型:匹配 => 57(57: INC_OP
,操作符,PLUS_PLUS)
指令:读入 => 3
到达状态[105]: exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) *| exp10 [0] )
类型:匹配 => 58(58: DEC_OP
,操作符,MINUS_MINUS)
指令:读入 => 3
到达状态[106]: exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
* exp [5] RSQ
) | exp10 [0] )
类型:匹配 => 98(98: LSQ
,操作符,LSQUARE)
指令:通过
项目:exp10[0] -> [ exp10 [1] DOT
[2] ] * type [0]
规则:exp10
到达状态[107]: type[0] -> * ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:try[0] -> TRY
block [1] CATCH
[ LPA
ID
[0] RPA
] * block [2]
规则:try
到达状态[16]: block[0] -> * LBR
[ stmt_list [0] ] RBR
类型:转移
指令:移进
预查:[100: LBR
,操作符,LBRACE]
项目:doc_list[0] -> LITERAL
[0] * [ COMMA
doc_list [1] ]
规则:doc_list
到达状态[108]: doc_list[0] -> LITERAL
[0] [ COMMA
* doc_list [1] ]
类型:匹配 => 91(91: COMMA
,操作符,COMMA)
指令:通过
到达状态[109]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] * RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:归约 => func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
* doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
指令:翻译 => doc_list 0
到达状态[110]: doc_list[0] -> LITERAL
[0] [ COMMA
doc_list [1] ] *
类型:归约 => doc_list[0] -> LITERAL
[0] [ COMMA
* doc_list [1] ]
指令:翻译 => doc_list 1
项目:var_list[0] -> * ID
[0] [ COMMA
var_list [1] ]
规则:var_list
到达状态[111]: var_list[0] -> ID
[0] * [ COMMA
var_list [1] ]
类型:匹配 => 0(0: ID
,标识符,(null))
指令:读入 => 0 [Action]
项目:func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
* ( PTR_OP
scope [3] | block [4] )
规则:func
到达状态[16]: block[0] -> * LBR
[ stmt_list [0] ] RBR
类型:转移
指令:移进
预查:[100: LBR
,操作符,LBRACE]
到达状态[112]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
* scope [3] | block [4] )
类型:匹配 => 56(56: PTR_OP
,操作符,POINTER)
指令:通过 [Action]
项目:exp5[0] -> * [ exp5 [1] ( LEFT_OP
[2] | RIGHT_OP
[2] ) ] exp6 [0]
规则:exp5
到达状态[113]: exp6[0] -> * [ exp6 [1] ( ADD
[2] | SUB
[2] ) ] exp7 [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp7[0] -> [ exp7 [1] ( MUL
[2] | DIV
[2] | MOD
[2] ) ] exp8 [0] *
规则:exp7
到达状态[114]: exp6[0] -> [ exp6 [1] ( ADD
[2] | SUB
[2] ) ] exp7 [0] *
类型:归约 => exp6[0] -> * [ exp6 [1] ( ADD
[2] | SUB
[2] ) ] exp7 [0]
指令:翻译 => exp7 0
到达状态[114]: exp6[0] -> [ exp6 [1] ( ADD
[2] | SUB
[2] ) ] exp7 [0] *
类型:归约 => exp6[0] -> [ exp6 [1] ( ADD
[2] | SUB
[2] ) *] exp7 [0]
指令:翻译 => exp7 0
到达状态[115]: exp7[0] -> [ exp7 [1] * ( MUL
[2] | DIV
[2] | MOD
[2] ) ] exp8 [0]
类型:左递归
指令:左递归 => exp7 1
预查:[80: MUL
,操作符,TIMES] [81: DIV
,操作符,DIVIDE] [82: MOD
,操作符,MOD]
项目:exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) *| exp10 [0] )
规则:exp9
到达状态[90]: exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] ) *
类型:归约 => exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) * exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] )
指令:翻译 => exp9 1
到达状态[96]: exp8[0] -> ( ( NOT_OP
[3] | NOT
[3] ) exp8 [1] | exp9 [0] ) *
类型:归约 => exp8[0] -> * ( ( NOT_OP
[3] | NOT
[3] ) exp8 [1] | exp9 [0] )
指令:翻译 => exp9 0
到达状态[97]: exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] * ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] )
类型:左递归
指令:左递归 => exp9 1
预查:[57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [98: LSQ
,操作符,LSQUARE]
项目:exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
* exp [5] RSQ
) | exp10 [0] )
规则:exp9
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:type[0] -> * ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
规则:type
到达状态[18]: call[0] -> * CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
类型:转移
指令:移进
预查:[44: CALL
,关键字,CALL]
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:匹配 => 4(4: INTEGER
,整数,(null))
指令:读入 => 0
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:匹配 => 5(5: DECIMAL
,实数,(null))
指令:读入 => 0
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:匹配 => 3(3: CHARACTER
,字符,(null))
指令:读入 => 0
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:匹配 => 1(1: BOOLEAN
,布尔,(null))
指令:读入 => 0
到达状态[116]: type[0] -> ( ID
[0] * [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
类型:匹配 => 0(0: ID
,标识符,(null))
指令:读入 => 0
到达状态[117]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] * [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
类型:匹配 => 2(2: LITERAL
,字符串,(null))
指令:读入 => 0
到达状态[118]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
* exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
类型:匹配 => 96(96: LPA
,操作符,LPARAN)
指令:通过
到达状态[119]: lambda[0] -> * LAMBDA
[1] LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:转移
指令:移进
预查:[49: LAMBDA
,关键字,LAMBDA]
到达状态[120]: set[0] -> * SET
exp [3] PROPERTY
exp [4] ASSIGN
exp [2]
类型:转移
指令:移进
预查:[50: SET
,关键字,SET]
到达状态[121]: invoke[0] -> * INVOKE
[0] exp [1] PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
类型:转移
指令:移进
预查:[51: INVOKE
,关键字,INVOKE]
到达状态[122]: array[0] -> * LSQ
[ exp_list [0] ] RSQ
类型:转移
指令:移进
预查:[98: LSQ
,操作符,LSQUARE]
到达状态[123]: map[0] -> * LBR
[ map_list [0] ] RBR
类型:转移
指令:移进
预查:[100: LBR
,操作符,LBRACE]
项目:doc_list[0] -> LITERAL
[0] [ COMMA
* doc_list [1] ]
规则:doc_list
到达状态[93]: doc_list[0] -> * LITERAL
[0] [ COMMA
doc_list [1] ]
类型:转移
指令:移进
预查:[2: LITERAL
,字符串,(null)]
项目:func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] * RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
规则:func
到达状态[124]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] * ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:匹配 => 99(99: RSQ
,操作符,RSQUARE)
指令:通过
项目:doc_list[0] -> LITERAL
[0] [ COMMA
doc_list [1] ] *
规则:doc_list
到达状态[109]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] * RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:归约 => func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
* doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
指令:翻译 => doc_list 0
到达状态[110]: doc_list[0] -> LITERAL
[0] [ COMMA
doc_list [1] ] *
类型:归约 => doc_list[0] -> LITERAL
[0] [ COMMA
* doc_list [1] ]
指令:翻译 => doc_list 1
项目:var_list[0] -> ID
[0] * [ COMMA
var_list [1] ]
规则:var_list
到达状态[125]: var_list[0] -> ID
[0] [ COMMA
* var_list [1] ]
类型:匹配 => 91(91: COMMA
,操作符,COMMA)
指令:通过
到达状态[126]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] * RPA
( PTR_OP
scope [3] | block [4] )
类型:归约 => func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
* [ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
指令:翻译 => var_list 2
到达状态[127]: lambda[0] -> LAMBDA
[1] LPA
[ var_list [2] ] * RPA
( PTR_OP
scope [3] | block [4] )
类型:归约 => lambda[0] -> LAMBDA
[1] LPA
* [ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
指令:翻译 => var_list 2
到达状态[128]: var_list[0] -> ID
[0] [ COMMA
var_list [1] ] *
类型:归约 => var_list[0] -> ID
[0] [ COMMA
* var_list [1] ]
指令:翻译 => var_list 1
项目:func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
* scope [3] | block [4] )
规则:func
到达状态[129]: scope[0] -> * exp [0]
类型:转移
指令:移进 [Action]
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp6[0] -> * [ exp6 [1] ( ADD
[2] | SUB
[2] ) ] exp7 [0]
规则:exp6
到达状态[130]: exp7[0] -> * [ exp7 [1] ( MUL
[2] | DIV
[2] | MOD
[2] ) ] exp8 [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp6[0] -> [ exp6 [1] ( ADD
[2] | SUB
[2] ) ] exp7 [0] *
规则:exp6
到达状态[131]: exp5[0] -> [ exp5 [1] ( LEFT_OP
[2] | RIGHT_OP
[2] ) ] exp6 [0] *
类型:归约 => exp5[0] -> * [ exp5 [1] ( LEFT_OP
[2] | RIGHT_OP
[2] ) ] exp6 [0]
指令:翻译 => exp6 0
到达状态[131]: exp5[0] -> [ exp5 [1] ( LEFT_OP
[2] | RIGHT_OP
[2] ) ] exp6 [0] *
类型:归约 => exp5[0] -> [ exp5 [1] ( LEFT_OP
[2] | RIGHT_OP
[2] ) *] exp6 [0]
指令:翻译 => exp6 0
到达状态[132]: exp6[0] -> [ exp6 [1] * ( ADD
[2] | SUB
[2] ) ] exp7 [0]
类型:左递归
指令:左递归 => exp6 1
预查:[78: ADD
,操作符,PLUS] [79: SUB
,操作符,MINUS]
项目:exp7[0] -> [ exp7 [1] * ( MUL
[2] | DIV
[2] | MOD
[2] ) ] exp8 [0]
规则:exp7
到达状态[133]: exp7[0] -> [ exp7 [1] ( MUL
[2] | DIV
[2] | MOD
[2] ) *] exp8 [0]
类型:匹配 => 80(80: MUL
,操作符,TIMES)
指令:读入 => 2
到达状态[133]: exp7[0] -> [ exp7 [1] ( MUL
[2] | DIV
[2] | MOD
[2] ) *] exp8 [0]
类型:匹配 => 81(81: DIV
,操作符,DIVIDE)
指令:读入 => 2
到达状态[133]: exp7[0] -> [ exp7 [1] ( MUL
[2] | DIV
[2] | MOD
[2] ) *] exp8 [0]
类型:匹配 => 82(82: MOD
,操作符,MOD)
指令:读入 => 2
项目:type[0] -> ( ID
[0] * [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
规则:type
到达状态[85]: exp10[0] -> [ exp10 [1] DOT
[2] ] type [0] *
类型:归约 => exp10[0] -> * [ exp10 [1] DOT
[2] ] type [0]
指令:翻译 => type 0
到达状态[85]: exp10[0] -> [ exp10 [1] DOT
[2] ] type [0] *
类型:归约 => exp10[0] -> [ exp10 [1] DOT
[2] ] * type [0]
指令:翻译 => type 0
到达状态[134]: type[0] -> ( ID
[0] [ LPA
[3] * [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
类型:匹配 => 96(96: LPA
,操作符,LPARAN)
指令:读入 => 3
项目:type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] * [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
规则:type
到达状态[85]: exp10[0] -> [ exp10 [1] DOT
[2] ] type [0] *
类型:归约 => exp10[0] -> * [ exp10 [1] DOT
[2] ] type [0]
指令:翻译 => type 0
到达状态[85]: exp10[0] -> [ exp10 [1] DOT
[2] ] type [0] *
类型:归约 => exp10[0] -> [ exp10 [1] DOT
[2] ] * type [0]
指令:翻译 => type 0
到达状态[135]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] * [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
类型:匹配 => 96(96: LPA
,操作符,LPARAN)
指令:读入 => 3
项目:type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
* exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
规则:type
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:lambda[0] -> * LAMBDA
[1] LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
规则:lambda
到达状态[136]: lambda[0] -> LAMBDA
[1] * LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:匹配 => 49(49: LAMBDA
,关键字,LAMBDA)
指令:读入 => 1 [Action]
项目:set[0] -> * SET
exp [3] PROPERTY
exp [4] ASSIGN
exp [2]
规则:set
到达状态[137]: set[0] -> SET
* exp [3] PROPERTY
exp [4] ASSIGN
exp [2]
类型:匹配 => 50(50: SET
,关键字,SET)
指令:通过
项目:invoke[0] -> * INVOKE
[0] exp [1] PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
规则:invoke
到达状态[138]: invoke[0] -> INVOKE
[0] * exp [1] PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
类型:匹配 => 51(51: INVOKE
,关键字,INVOKE)
指令:读入 => 0
项目:array[0] -> * LSQ
[ exp_list [0] ] RSQ
规则:array
到达状态[139]: array[0] -> LSQ
* [ exp_list [0] ] RSQ
类型:匹配 => 98(98: LSQ
,操作符,LSQUARE)
指令:通过
项目:map[0] -> * LBR
[ map_list [0] ] RBR
规则:map
到达状态[140]: map[0] -> LBR
* [ map_list [0] ] RBR
类型:匹配 => 100(100: LBR
,操作符,LBRACE)
指令:通过
项目:func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] * ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
规则:func
到达状态[88]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) * LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:匹配 => 0(0: ID
,标识符,(null))
指令:读入 => 1 [Action]
到达状态[88]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) * LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:匹配 => 86(86: NOT
,操作符,BIT_NOT)
指令:读入 => 1 [Action]
项目:var_list[0] -> ID
[0] [ COMMA
* var_list [1] ]
规则:var_list
到达状态[101]: var_list[0] -> * ID
[0] [ COMMA
var_list [1] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)]
项目:func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] * RPA
( PTR_OP
scope [3] | block [4] )
规则:func
到达状态[102]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
* ( PTR_OP
scope [3] | block [4] )
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:lambda[0] -> LAMBDA
[1] LPA
[ var_list [2] ] * RPA
( PTR_OP
scope [3] | block [4] )
规则:lambda
到达状态[141]: lambda[0] -> LAMBDA
[1] LPA
[ var_list [2] ] RPA
* ( PTR_OP
scope [3] | block [4] )
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:var_list[0] -> ID
[0] [ COMMA
var_list [1] ] *
规则:var_list
到达状态[126]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] * RPA
( PTR_OP
scope [3] | block [4] )
类型:归约 => func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
* [ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
指令:翻译 => var_list 2
到达状态[127]: lambda[0] -> LAMBDA
[1] LPA
[ var_list [2] ] * RPA
( PTR_OP
scope [3] | block [4] )
类型:归约 => lambda[0] -> LAMBDA
[1] LPA
* [ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
指令:翻译 => var_list 2
到达状态[128]: var_list[0] -> ID
[0] [ COMMA
var_list [1] ] *
类型:归约 => var_list[0] -> ID
[0] [ COMMA
* var_list [1] ]
指令:翻译 => var_list 1
项目:scope[0] -> * exp [0]
规则:scope
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp7[0] -> * [ exp7 [1] ( MUL
[2] | DIV
[2] | MOD
[2] ) ] exp8 [0]
规则:exp7
到达状态[142]: exp8[0] -> * ( ( NOT_OP
[3] | NOT
[3] ) exp8 [1] | exp9 [0] )
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp5[0] -> [ exp5 [1] ( LEFT_OP
[2] | RIGHT_OP
[2] ) ] exp6 [0] *
规则:exp5
到达状态[143]: exp4[0] -> [ exp4 [1] ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) ] exp5 [0] *
类型:归约 => exp4[0] -> * [ exp4 [1] ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) ] exp5 [0]
指令:翻译 => exp5 0
到达状态[143]: exp4[0] -> [ exp4 [1] ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) ] exp5 [0] *
类型:归约 => exp4[0] -> [ exp4 [1] ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) *] exp5 [0]
指令:翻译 => exp5 0
到达状态[144]: exp5[0] -> [ exp5 [1] * ( LEFT_OP
[2] | RIGHT_OP
[2] ) ] exp6 [0]
类型:左递归
指令:左递归 => exp5 1
预查:[59: LEFT_OP
,操作符,LEFT_SHIFT] [60: RIGHT_OP
,操作符,RIGHT_SHIFT]
项目:exp6[0] -> [ exp6 [1] * ( ADD
[2] | SUB
[2] ) ] exp7 [0]
规则:exp6
到达状态[145]: exp6[0] -> [ exp6 [1] ( ADD
[2] | SUB
[2] ) *] exp7 [0]
类型:匹配 => 78(78: ADD
,操作符,PLUS)
指令:读入 => 2
到达状态[145]: exp6[0] -> [ exp6 [1] ( ADD
[2] | SUB
[2] ) *] exp7 [0]
类型:匹配 => 79(79: SUB
,操作符,MINUS)
指令:读入 => 2
项目:exp7[0] -> [ exp7 [1] ( MUL
[2] | DIV
[2] | MOD
[2] ) *] exp8 [0]
规则:exp7
到达状态[142]: exp8[0] -> * ( ( NOT_OP
[3] | NOT
[3] ) exp8 [1] | exp9 [0] )
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:type[0] -> ( ID
[0] [ LPA
[3] * [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
规则:type
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
到达状态[81]: exp_list[0] -> * exp [0] [ COMMA
exp_list [1] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] * [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
规则:type
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
到达状态[81]: exp_list[0] -> * exp [0] [ COMMA
exp_list [1] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:lambda[0] -> LAMBDA
[1] * LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
规则:lambda
到达状态[146]: lambda[0] -> LAMBDA
[1] LPA
* [ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
类型:匹配 => 96(96: LPA
,操作符,LPARAN)
指令:通过
项目:set[0] -> SET
* exp [3] PROPERTY
exp [4] ASSIGN
exp [2]
规则:set
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:invoke[0] -> INVOKE
[0] * exp [1] PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
规则:invoke
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:array[0] -> LSQ
* [ exp_list [0] ] RSQ
规则:array
到达状态[81]: exp_list[0] -> * exp [0] [ COMMA
exp_list [1] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
到达状态[147]: array[0] -> LSQ
[ exp_list [0] ] RSQ
*
类型:匹配 => 99(99: RSQ
,操作符,RSQUARE)
指令:通过
项目:map[0] -> LBR
* [ map_list [0] ] RBR
规则:map
到达状态[148]: map_list[0] -> * LITERAL
[1] COLON
[3] exp [2] [ COMMA
map_list [0] ]
类型:转移
指令:移进
预查:[2: LITERAL
,字符串,(null)]
到达状态[149]: map[0] -> LBR
[ map_list [0] ] RBR
*
类型:匹配 => 101(101: RBR
,操作符,RBRACE)
指令:通过
项目:lambda[0] -> LAMBDA
[1] LPA
[ var_list [2] ] RPA
* ( PTR_OP
scope [3] | block [4] )
规则:lambda
到达状态[16]: block[0] -> * LBR
[ stmt_list [0] ] RBR
类型:转移
指令:移进
预查:[100: LBR
,操作符,LBRACE]
到达状态[150]: lambda[0] -> LAMBDA
[1] LPA
[ var_list [2] ] RPA
( PTR_OP
* scope [3] | block [4] )
类型:匹配 => 56(56: PTR_OP
,操作符,POINTER)
指令:通过 [Action]
项目:exp8[0] -> * ( ( NOT_OP
[3] | NOT
[3] ) exp8 [1] | exp9 [0] )
规则:exp8
到达状态[151]: exp9[0] -> * ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] )
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
到达状态[152]: exp8[0] -> ( ( NOT_OP
[3] | NOT
[3] ) * exp8 [1] | exp9 [0] )
类型:匹配 => 87(87: NOT_OP
,操作符,LOGICAL_NOT)
指令:读入 => 3
到达状态[152]: exp8[0] -> ( ( NOT_OP
[3] | NOT
[3] ) * exp8 [1] | exp9 [0] )
类型:匹配 => 86(86: NOT
,操作符,BIT_NOT)
指令:读入 => 3
项目:exp4[0] -> [ exp4 [1] ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) ] exp5 [0] *
规则:exp4
到达状态[153]: exp3[0] -> [ exp3 [1] ( EQ_OP
[2] | NE_OP
[2] ) ] exp4 [0] *
类型:归约 => exp3[0] -> * [ exp3 [1] ( EQ_OP
[2] | NE_OP
[2] ) ] exp4 [0]
指令:翻译 => exp4 0
到达状态[153]: exp3[0] -> [ exp3 [1] ( EQ_OP
[2] | NE_OP
[2] ) ] exp4 [0] *
类型:归约 => exp3[0] -> [ exp3 [1] ( EQ_OP
[2] | NE_OP
[2] ) *] exp4 [0]
指令:翻译 => exp4 0
到达状态[154]: exp4[0] -> [ exp4 [1] * ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) ] exp5 [0]
类型:左递归
指令:左递归 => exp4 1
预查:[61: LE_OP
,操作符,LESS_THAN_OR_EQUAL] [62: GE_OP
,操作符,GREATER_THAN_OR_EQUAL] [88: LT
,操作符,LESS_THAN] [89: GT
,操作符,GREATER_THAN]
项目:exp5[0] -> [ exp5 [1] * ( LEFT_OP
[2] | RIGHT_OP
[2] ) ] exp6 [0]
规则:exp5
到达状态[155]: exp5[0] -> [ exp5 [1] ( LEFT_OP
[2] | RIGHT_OP
[2] ) *] exp6 [0]
类型:匹配 => 59(59: LEFT_OP
,操作符,LEFT_SHIFT)
指令:读入 => 2
到达状态[155]: exp5[0] -> [ exp5 [1] ( LEFT_OP
[2] | RIGHT_OP
[2] ) *] exp6 [0]
类型:匹配 => 60(60: RIGHT_OP
,操作符,RIGHT_SHIFT)
指令:读入 => 2
项目:exp6[0] -> [ exp6 [1] ( ADD
[2] | SUB
[2] ) *] exp7 [0]
规则:exp6
到达状态[130]: exp7[0] -> * [ exp7 [1] ( MUL
[2] | DIV
[2] | MOD
[2] ) ] exp8 [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:lambda[0] -> LAMBDA
[1] LPA
* [ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] )
规则:lambda
到达状态[101]: var_list[0] -> * ID
[0] [ COMMA
var_list [1] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)]
到达状态[141]: lambda[0] -> LAMBDA
[1] LPA
[ var_list [2] ] RPA
* ( PTR_OP
scope [3] | block [4] )
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:array[0] -> LSQ
[ exp_list [0] ] RSQ
*
规则:array
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:归约 => type[0] -> * ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
指令:翻译 => array 1
项目:map_list[0] -> * LITERAL
[1] COLON
[3] exp [2] [ COMMA
map_list [0] ]
规则:map_list
到达状态[156]: map_list[0] -> LITERAL
[1] * COLON
[3] exp [2] [ COMMA
map_list [0] ]
类型:匹配 => 2(2: LITERAL
,字符串,(null))
指令:读入 => 1
项目:map[0] -> LBR
[ map_list [0] ] RBR
*
规则:map
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:归约 => type[0] -> * ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
指令:翻译 => map 1
项目:lambda[0] -> LAMBDA
[1] LPA
[ var_list [2] ] RPA
( PTR_OP
* scope [3] | block [4] )
规则:lambda
到达状态[129]: scope[0] -> * exp [0]
类型:转移
指令:移进 [Action]
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp9[0] -> * ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] )
规则:exp9
到达状态[157]: exp10[0] -> * [ exp10 [1] DOT
[2] ] type [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
到达状态[158]: exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) * exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] )
类型:匹配 => 57(57: INC_OP
,操作符,PLUS_PLUS)
指令:读入 => 3
到达状态[158]: exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) * exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] )
类型:匹配 => 58(58: DEC_OP
,操作符,MINUS_MINUS)
指令:读入 => 3
项目:exp8[0] -> ( ( NOT_OP
[3] | NOT
[3] ) * exp8 [1] | exp9 [0] )
规则:exp8
到达状态[142]: exp8[0] -> * ( ( NOT_OP
[3] | NOT
[3] ) exp8 [1] | exp9 [0] )
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp3[0] -> [ exp3 [1] ( EQ_OP
[2] | NE_OP
[2] ) ] exp4 [0] *
规则:exp3
到达状态[159]: exp2[0] -> [ exp2 [1] ( OR
[2] | XOR
[2] | AND
[2] ) ] exp3 [0] *
类型:归约 => exp2[0] -> * [ exp2 [1] ( OR
[2] | XOR
[2] | AND
[2] ) ] exp3 [0]
指令:翻译 => exp3 0
到达状态[159]: exp2[0] -> [ exp2 [1] ( OR
[2] | XOR
[2] | AND
[2] ) ] exp3 [0] *
类型:归约 => exp2[0] -> [ exp2 [1] ( OR
[2] | XOR
[2] | AND
[2] ) *] exp3 [0]
指令:翻译 => exp3 0
到达状态[160]: exp3[0] -> [ exp3 [1] * ( EQ_OP
[2] | NE_OP
[2] ) ] exp4 [0]
类型:左递归
指令:左递归 => exp3 1
预查:[63: EQ_OP
,操作符,EQUAL] [64: NE_OP
,操作符,NOT_EQUAL]
项目:exp4[0] -> [ exp4 [1] * ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) ] exp5 [0]
规则:exp4
到达状态[161]: exp4[0] -> [ exp4 [1] ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) *] exp5 [0]
类型:匹配 => 88(88: LT
,操作符,LESS_THAN)
指令:读入 => 2
到达状态[161]: exp4[0] -> [ exp4 [1] ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) *] exp5 [0]
类型:匹配 => 89(89: GT
,操作符,GREATER_THAN)
指令:读入 => 2
到达状态[161]: exp4[0] -> [ exp4 [1] ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) *] exp5 [0]
类型:匹配 => 61(61: LE_OP
,操作符,LESS_THAN_OR_EQUAL)
指令:读入 => 2
到达状态[161]: exp4[0] -> [ exp4 [1] ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) *] exp5 [0]
类型:匹配 => 62(62: GE_OP
,操作符,GREATER_THAN_OR_EQUAL)
指令:读入 => 2
项目:exp5[0] -> [ exp5 [1] ( LEFT_OP
[2] | RIGHT_OP
[2] ) *] exp6 [0]
规则:exp5
到达状态[113]: exp6[0] -> * [ exp6 [1] ( ADD
[2] | SUB
[2] ) ] exp7 [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:map_list[0] -> LITERAL
[1] * COLON
[3] exp [2] [ COMMA
map_list [0] ]
规则:map_list
到达状态[162]: map_list[0] -> LITERAL
[1] COLON
[3] * exp [2] [ COMMA
map_list [0] ]
类型:匹配 => 95(95: COLON
,操作符,COLON)
指令:读入 => 3
项目:exp10[0] -> * [ exp10 [1] DOT
[2] ] type [0]
规则:exp10
到达状态[107]: type[0] -> * ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) * exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] )
规则:exp9
到达状态[151]: exp9[0] -> * ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) | exp10 [0] )
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp2[0] -> [ exp2 [1] ( OR
[2] | XOR
[2] | AND
[2] ) ] exp3 [0] *
规则:exp2
到达状态[163]: exp1[0] -> [ exp1 [1] ( AND_OP
[2] | OR_OP
[2] ) ] exp2 [0] *
类型:归约 => exp1[0] -> * [ exp1 [1] ( AND_OP
[2] | OR_OP
[2] ) ] exp2 [0]
指令:翻译 => exp2 0
到达状态[163]: exp1[0] -> [ exp1 [1] ( AND_OP
[2] | OR_OP
[2] ) ] exp2 [0] *
类型:归约 => exp1[0] -> [ exp1 [1] ( AND_OP
[2] | OR_OP
[2] ) *] exp2 [0]
指令:翻译 => exp2 0
到达状态[164]: exp2[0] -> [ exp2 [1] * ( OR
[2] | XOR
[2] | AND
[2] ) ] exp3 [0]
类型:左递归
指令:左递归 => exp2 1
预查:[83: AND
,操作符,BIT_AND] [84: OR
,操作符,BIT_OR] [85: XOR
,操作符,BIT_XOR]
项目:exp3[0] -> [ exp3 [1] * ( EQ_OP
[2] | NE_OP
[2] ) ] exp4 [0]
规则:exp3
到达状态[165]: exp3[0] -> [ exp3 [1] ( EQ_OP
[2] | NE_OP
[2] ) *] exp4 [0]
类型:匹配 => 63(63: EQ_OP
,操作符,EQUAL)
指令:读入 => 2
到达状态[165]: exp3[0] -> [ exp3 [1] ( EQ_OP
[2] | NE_OP
[2] ) *] exp4 [0]
类型:匹配 => 64(64: NE_OP
,操作符,NOT_EQUAL)
指令:读入 => 2
项目:exp4[0] -> [ exp4 [1] ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) *] exp5 [0]
规则:exp4
到达状态[103]: exp5[0] -> * [ exp5 [1] ( LEFT_OP
[2] | RIGHT_OP
[2] ) ] exp6 [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:map_list[0] -> LITERAL
[1] COLON
[3] * exp [2] [ COMMA
map_list [0] ]
规则:map_list
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp1[0] -> [ exp1 [1] ( AND_OP
[2] | OR_OP
[2] ) ] exp2 [0] *
规则:exp1
到达状态[166]: exp0[0] -> exp1 [0] * [ QUERY
[4] exp0 [6] COLON
[5] exp0 [7] ]
类型:归约 => exp0[0] -> * exp1 [0] [ QUERY
[4] exp0 [6] COLON
[5] exp0 [7] ]
指令:翻译 => exp1 0
到达状态[167]: exp1[0] -> [ exp1 [1] * ( AND_OP
[2] | OR_OP
[2] ) ] exp2 [0]
类型:左递归
指令:左递归 => exp1 1
预查:[65: AND_OP
,操作符,LOGICAL_AND] [66: OR_OP
,操作符,LOGICAL_OR]
项目:exp2[0] -> [ exp2 [1] * ( OR
[2] | XOR
[2] | AND
[2] ) ] exp3 [0]
规则:exp2
到达状态[168]: exp2[0] -> [ exp2 [1] ( OR
[2] | XOR
[2] | AND
[2] ) *] exp3 [0]
类型:匹配 => 84(84: OR
,操作符,BIT_OR)
指令:读入 => 2
到达状态[168]: exp2[0] -> [ exp2 [1] ( OR
[2] | XOR
[2] | AND
[2] ) *] exp3 [0]
类型:匹配 => 85(85: XOR
,操作符,BIT_XOR)
指令:读入 => 2
到达状态[168]: exp2[0] -> [ exp2 [1] ( OR
[2] | XOR
[2] | AND
[2] ) *] exp3 [0]
类型:匹配 => 83(83: AND
,操作符,BIT_AND)
指令:读入 => 2
项目:exp3[0] -> [ exp3 [1] ( EQ_OP
[2] | NE_OP
[2] ) *] exp4 [0]
规则:exp3
到达状态[95]: exp4[0] -> * [ exp4 [1] ( LT
[2] | GT
[2] | LE_OP
[2] | GE_OP
[2] ) ] exp5 [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp0[0] -> exp1 [0] * [ QUERY
[4] exp0 [6] COLON
[5] exp0 [7] ]
规则:exp0
到达状态[169]: exp0[0] -> exp1 [0] [ QUERY
[4] * exp0 [6] COLON
[5] exp0 [7] ]
类型:匹配 => 90(90: QUERY
,操作符,QUERY)
指令:读入 => 4
到达状态[170]: exp0[0] -> exp1 [0] [ QUERY
[4] exp0 [6] * COLON
[5] exp0 [7] ]
类型:归约 => exp0[0] -> exp1 [0] [ QUERY
[4] * exp0 [6] COLON
[5] exp0 [7] ]
指令:翻译 => exp0 6
到达状态[171]: exp0[0] -> exp1 [0] [ QUERY
[4] exp0 [6] COLON
[5] exp0 [7] ] *
类型:归约 => exp0[0] -> exp1 [0] [ QUERY
[4] exp0 [6] COLON
[5] * exp0 [7] ]
指令:翻译 => exp0 7
到达状态[172]: exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) ] exp0 [0] *
类型:归约 => exp01[0] -> * [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) ] exp0 [0]
指令:翻译 => exp0 0
到达状态[172]: exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) ] exp0 [0] *
类型:归约 => exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) *] exp0 [0]
指令:翻译 => exp0 0
项目:exp1[0] -> [ exp1 [1] * ( AND_OP
[2] | OR_OP
[2] ) ] exp2 [0]
规则:exp1
到达状态[173]: exp1[0] -> [ exp1 [1] ( AND_OP
[2] | OR_OP
[2] ) *] exp2 [0]
类型:匹配 => 65(65: AND_OP
,操作符,LOGICAL_AND)
指令:读入 => 2
到达状态[173]: exp1[0] -> [ exp1 [1] ( AND_OP
[2] | OR_OP
[2] ) *] exp2 [0]
类型:匹配 => 66(66: OR_OP
,操作符,LOGICAL_OR)
指令:读入 => 2
项目:exp2[0] -> [ exp2 [1] ( OR
[2] | XOR
[2] | AND
[2] ) *] exp3 [0]
规则:exp2
到达状态[89]: exp3[0] -> * [ exp3 [1] ( EQ_OP
[2] | NE_OP
[2] ) ] exp4 [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp0[0] -> exp1 [0] [ QUERY
[4] * exp0 [6] COLON
[5] exp0 [7] ]
规则:exp0
到达状态[47]: exp0[0] -> * exp1 [0] [ QUERY
[4] exp0 [6] COLON
[5] exp0 [7] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp0[0] -> exp1 [0] [ QUERY
[4] exp0 [6] * COLON
[5] exp0 [7] ]
规则:exp0
到达状态[174]: exp0[0] -> exp1 [0] [ QUERY
[4] exp0 [6] COLON
[5] * exp0 [7] ]
类型:匹配 => 95(95: COLON
,操作符,COLON)
指令:读入 => 5
项目:exp0[0] -> exp1 [0] [ QUERY
[4] exp0 [6] COLON
[5] exp0 [7] ] *
规则:exp0
到达状态[170]: exp0[0] -> exp1 [0] [ QUERY
[4] exp0 [6] * COLON
[5] exp0 [7] ]
类型:归约 => exp0[0] -> exp1 [0] [ QUERY
[4] * exp0 [6] COLON
[5] exp0 [7] ]
指令:翻译 => exp0 6
到达状态[171]: exp0[0] -> exp1 [0] [ QUERY
[4] exp0 [6] COLON
[5] exp0 [7] ] *
类型:归约 => exp0[0] -> exp1 [0] [ QUERY
[4] exp0 [6] COLON
[5] * exp0 [7] ]
指令:翻译 => exp0 7
到达状态[172]: exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) ] exp0 [0] *
类型:归约 => exp01[0] -> * [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) ] exp0 [0]
指令:翻译 => exp0 0
到达状态[172]: exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) ] exp0 [0] *
类型:归约 => exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) *] exp0 [0]
指令:翻译 => exp0 0
项目:exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) ] exp0 [0] *
规则:exp01
到达状态[175]: exp[0] -> exp01 [0] * [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:归约 => exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
指令:翻译 => exp01 0
到达状态[176]: exp01[0] -> [ exp01 [1] * ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) ] exp0 [0]
类型:左递归
指令:左递归 => exp01 1
预查:[67: MUL_ASSIGN
,操作符,TIMES_ASSIGN] [68: DIV_ASSIGN
,操作符,DIV_ASSIGN] [69: MOD_ASSIGN
,操作符,MOD_ASSIGN] [70: ADD_ASSIGN
,操作符,PLUS_ASSIGN] [71: SUB_ASSIGN
,操作符,MINUS_ASSIGN] [74: AND_ASSIGN
,操作符,AND_ASSIGN] [75: XOR_ASSIGN
,操作符,XOR_ASSIGN] [76: OR_ASSIGN
,操作符,OR_ASSIGN] [77: EQ_ASSIGN
,操作符,EQ_ASSIGN]
项目:exp1[0] -> [ exp1 [1] ( AND_OP
[2] | OR_OP
[2] ) *] exp2 [0]
规则:exp1
到达状态[83]: exp2[0] -> * [ exp2 [1] ( OR
[2] | XOR
[2] | AND
[2] ) ] exp3 [0]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp0[0] -> exp1 [0] [ QUERY
[4] exp0 [6] COLON
[5] * exp0 [7] ]
规则:exp0
到达状态[47]: exp0[0] -> * exp1 [0] [ QUERY
[4] exp0 [6] COLON
[5] exp0 [7] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp[0] -> exp01 [0] * [ ( INTEGER
[10] | DECIMAL
[10] ) ]
规则:exp
到达状态[46]: stmt_exp[0] -> ( var [0] | call [0] | cycle_ctrl [0] | exp [0] ) *
类型:归约 => stmt_exp[0] -> * ( var [0] | call [0] | cycle_ctrl [0] | exp [0] )
指令:翻译 => exp 0
到达状态[67]: for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) *] RPA
block [3]
类型:归约 => for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
* [ ( exp [2] | var [2] ) ] RPA
block [3]
指令:翻译 => exp 2
到达状态[74]: var[0] -> ( VARIABLE
[11] | LET
[12] ) ID
[0] [ ASSIGN
( func [1] | exp [2] ) *]
类型:归约 => var[0] -> ( VARIABLE
[11] | LET
[12] ) ID
[0] [ ASSIGN
* ( func [1] | exp [2] ) ]
指令:翻译 => exp 2
到达状态[75]: call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) * RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
类型:归约 => call[0] -> CALL
[4] ( LPA
* ( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
指令:翻译 => exp 3
到达状态[177]: exp[0] -> exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) *]
类型:匹配 => 4(4: INTEGER
,整数,(null))
指令:读入 => 10
到达状态[177]: exp[0] -> exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) *]
类型:匹配 => 5(5: DECIMAL
,实数,(null))
指令:读入 => 10
到达状态[178]: exp_list[0] -> exp [0] * [ COMMA
exp_list [1] ]
类型:归约 => exp_list[0] -> * exp [0] [ COMMA
exp_list [1] ]
指令:翻译 => exp 0
到达状态[179]: exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] * RSQ
) | exp10 [0] )
类型:归约 => exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
* exp [5] RSQ
) | exp10 [0] )
指令:翻译 => exp 5
到达状态[180]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] * RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
类型:归约 => type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
* exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
指令:翻译 => exp 1
到达状态[181]: ret[0] -> ( YIELD
[1] | RETURN
) [ exp [0] ] * SEMI
类型:归约 => ret[0] -> ( YIELD
[1] | RETURN
) * [ exp [0] ] SEMI
指令:翻译 => exp 0
到达状态[182]: if[0] -> IF
LPA
exp [0] * RPA
block [1] [ ELSE
( block [2] | if [3] ) ]
类型:归约 => if[0] -> IF
LPA
* exp [0] RPA
block [1] [ ELSE
( block [2] | if [3] ) ]
指令:翻译 => exp 0
到达状态[183]: for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] * SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
类型:归约 => for[0] -> FOR
LPA
[ var [0] ] SEMI
* [ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
指令:翻译 => exp 1
到达状态[184]: while[0] -> WHILE
LPA
exp [0] * RPA
block [1]
类型:归约 => while[0] -> WHILE
LPA
* exp [0] RPA
block [1]
指令:翻译 => exp 0
到达状态[185]: foreach[0] -> FOREACH
LPA
VARIABLE
ID
[0] COLON
exp [1] * RPA
block [2]
类型:归约 => foreach[0] -> FOREACH
LPA
VARIABLE
ID
[0] COLON
* exp [1] RPA
block [2]
指令:翻译 => exp 1
到达状态[186]: set[0] -> SET
exp [3] * PROPERTY
exp [4] ASSIGN
exp [2]
类型:归约 => set[0] -> SET
* exp [3] PROPERTY
exp [4] ASSIGN
exp [2]
指令:翻译 => exp 3
到达状态[187]: set[0] -> SET
exp [3] PROPERTY
exp [4] * ASSIGN
exp [2]
类型:归约 => set[0] -> SET
exp [3] PROPERTY
* exp [4] ASSIGN
exp [2]
指令:翻译 => exp 4
到达状态[188]: set[0] -> SET
exp [3] PROPERTY
exp [4] ASSIGN
exp [2] *
类型:归约 => set[0] -> SET
exp [3] PROPERTY
exp [4] ASSIGN
* exp [2]
指令:翻译 => exp 2
到达状态[189]: invoke[0] -> INVOKE
[0] exp [1] * PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
类型:归约 => invoke[0] -> INVOKE
[0] * exp [1] PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
指令:翻译 => exp 1
到达状态[190]: invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] * PROPERTY
LPA
[ exp_list [3] ] RPA
类型:归约 => invoke[0] -> INVOKE
[0] exp [1] PROPERTY
* exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
指令:翻译 => exp 2
到达状态[191]: throw[0] -> THROW
exp [0] * SEMI
类型:归约 => throw[0] -> THROW
* exp [0] SEMI
指令:翻译 => exp 0
到达状态[192]: map_list[0] -> LITERAL
[1] COLON
[3] exp [2] * [ COMMA
map_list [0] ]
类型:归约 => map_list[0] -> LITERAL
[1] COLON
[3] * exp [2] [ COMMA
map_list [0] ]
指令:翻译 => exp 2
到达状态[193]: scope[0] -> exp [0] *
类型:归约 => scope[0] -> * exp [0]
指令:翻译 => exp 0
项目:exp01[0] -> [ exp01 [1] * ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) ] exp0 [0]
规则:exp01
到达状态[194]: exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) *] exp0 [0]
类型:匹配 => 77(77: EQ_ASSIGN
,操作符,EQ_ASSIGN)
指令:读入 => 2
到达状态[194]: exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) *] exp0 [0]
类型:匹配 => 70(70: ADD_ASSIGN
,操作符,PLUS_ASSIGN)
指令:读入 => 2
到达状态[194]: exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) *] exp0 [0]
类型:匹配 => 71(71: SUB_ASSIGN
,操作符,MINUS_ASSIGN)
指令:读入 => 2
到达状态[194]: exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) *] exp0 [0]
类型:匹配 => 67(67: MUL_ASSIGN
,操作符,TIMES_ASSIGN)
指令:读入 => 2
到达状态[194]: exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) *] exp0 [0]
类型:匹配 => 68(68: DIV_ASSIGN
,操作符,DIV_ASSIGN)
指令:读入 => 2
到达状态[194]: exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) *] exp0 [0]
类型:匹配 => 74(74: AND_ASSIGN
,操作符,AND_ASSIGN)
指令:读入 => 2
到达状态[194]: exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) *] exp0 [0]
类型:匹配 => 76(76: OR_ASSIGN
,操作符,OR_ASSIGN)
指令:读入 => 2
到达状态[194]: exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) *] exp0 [0]
类型:匹配 => 75(75: XOR_ASSIGN
,操作符,XOR_ASSIGN)
指令:读入 => 2
到达状态[194]: exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) *] exp0 [0]
类型:匹配 => 69(69: MOD_ASSIGN
,操作符,MOD_ASSIGN)
指令:读入 => 2
项目:exp[0] -> exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) *]
规则:exp
到达状态[46]: stmt_exp[0] -> ( var [0] | call [0] | cycle_ctrl [0] | exp [0] ) *
类型:归约 => stmt_exp[0] -> * ( var [0] | call [0] | cycle_ctrl [0] | exp [0] )
指令:翻译 => exp 0
到达状态[67]: for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
[ ( exp [2] | var [2] ) *] RPA
block [3]
类型:归约 => for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
* [ ( exp [2] | var [2] ) ] RPA
block [3]
指令:翻译 => exp 2
到达状态[74]: var[0] -> ( VARIABLE
[11] | LET
[12] ) ID
[0] [ ASSIGN
( func [1] | exp [2] ) *]
类型:归约 => var[0] -> ( VARIABLE
[11] | LET
[12] ) ID
[0] [ ASSIGN
* ( func [1] | exp [2] ) ]
指令:翻译 => exp 2
到达状态[75]: call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) * RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
类型:归约 => call[0] -> CALL
[4] ( LPA
* ( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
指令:翻译 => exp 3
到达状态[178]: exp_list[0] -> exp [0] * [ COMMA
exp_list [1] ]
类型:归约 => exp_list[0] -> * exp [0] [ COMMA
exp_list [1] ]
指令:翻译 => exp 0
到达状态[179]: exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] * RSQ
) | exp10 [0] )
类型:归约 => exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
* exp [5] RSQ
) | exp10 [0] )
指令:翻译 => exp 5
到达状态[180]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] * RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
类型:归约 => type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
* exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
指令:翻译 => exp 1
到达状态[181]: ret[0] -> ( YIELD
[1] | RETURN
) [ exp [0] ] * SEMI
类型:归约 => ret[0] -> ( YIELD
[1] | RETURN
) * [ exp [0] ] SEMI
指令:翻译 => exp 0
到达状态[182]: if[0] -> IF
LPA
exp [0] * RPA
block [1] [ ELSE
( block [2] | if [3] ) ]
类型:归约 => if[0] -> IF
LPA
* exp [0] RPA
block [1] [ ELSE
( block [2] | if [3] ) ]
指令:翻译 => exp 0
到达状态[183]: for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] * SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
类型:归约 => for[0] -> FOR
LPA
[ var [0] ] SEMI
* [ exp [1] ] SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
指令:翻译 => exp 1
到达状态[184]: while[0] -> WHILE
LPA
exp [0] * RPA
block [1]
类型:归约 => while[0] -> WHILE
LPA
* exp [0] RPA
block [1]
指令:翻译 => exp 0
到达状态[185]: foreach[0] -> FOREACH
LPA
VARIABLE
ID
[0] COLON
exp [1] * RPA
block [2]
类型:归约 => foreach[0] -> FOREACH
LPA
VARIABLE
ID
[0] COLON
* exp [1] RPA
block [2]
指令:翻译 => exp 1
到达状态[186]: set[0] -> SET
exp [3] * PROPERTY
exp [4] ASSIGN
exp [2]
类型:归约 => set[0] -> SET
* exp [3] PROPERTY
exp [4] ASSIGN
exp [2]
指令:翻译 => exp 3
到达状态[187]: set[0] -> SET
exp [3] PROPERTY
exp [4] * ASSIGN
exp [2]
类型:归约 => set[0] -> SET
exp [3] PROPERTY
* exp [4] ASSIGN
exp [2]
指令:翻译 => exp 4
到达状态[188]: set[0] -> SET
exp [3] PROPERTY
exp [4] ASSIGN
exp [2] *
类型:归约 => set[0] -> SET
exp [3] PROPERTY
exp [4] ASSIGN
* exp [2]
指令:翻译 => exp 2
到达状态[189]: invoke[0] -> INVOKE
[0] exp [1] * PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
类型:归约 => invoke[0] -> INVOKE
[0] * exp [1] PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
指令:翻译 => exp 1
到达状态[190]: invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] * PROPERTY
LPA
[ exp_list [3] ] RPA
类型:归约 => invoke[0] -> INVOKE
[0] exp [1] PROPERTY
* exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
指令:翻译 => exp 2
到达状态[191]: throw[0] -> THROW
exp [0] * SEMI
类型:归约 => throw[0] -> THROW
* exp [0] SEMI
指令:翻译 => exp 0
到达状态[192]: map_list[0] -> LITERAL
[1] COLON
[3] exp [2] * [ COMMA
map_list [0] ]
类型:归约 => map_list[0] -> LITERAL
[1] COLON
[3] * exp [2] [ COMMA
map_list [0] ]
指令:翻译 => exp 2
到达状态[193]: scope[0] -> exp [0] *
类型:归约 => scope[0] -> * exp [0]
指令:翻译 => exp 0
项目:exp_list[0] -> exp [0] * [ COMMA
exp_list [1] ]
规则:exp_list
到达状态[195]: exp_list[0] -> exp [0] [ COMMA
* exp_list [1] ]
类型:匹配 => 91(91: COMMA
,操作符,COMMA)
指令:通过
到达状态[196]: exp_list[0] -> exp [0] [ COMMA
exp_list [1] ] *
类型:归约 => exp_list[0] -> exp [0] [ COMMA
* exp_list [1] ]
指令:翻译 => exp_list 1
到达状态[197]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] * RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
类型:归约 => type[0] -> ( ID
[0] [ LPA
[3] * [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
指令:翻译 => exp_list 4
到达状态[198]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] * RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
类型:归约 => type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] * [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
指令:翻译 => exp_list 4
到达状态[199]: call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] * RPA
类型:归约 => call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
* [ exp_list [2] ] RPA
指令:翻译 => exp_list 2
到达状态[200]: array[0] -> LSQ
[ exp_list [0] ] * RSQ
类型:归约 => array[0] -> LSQ
* [ exp_list [0] ] RSQ
指令:翻译 => exp_list 0
到达状态[201]: invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] * RPA
类型:归约 => invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] PROPERTY
LPA
* [ exp_list [3] ] RPA
指令:翻译 => exp_list 3
项目:exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] * RSQ
) | exp10 [0] )
规则:exp9
到达状态[105]: exp9[0] -> ( ( INC_OP
[3] | DEC_OP
[3] ) exp9 [1] | exp9 [1] ( INC_OP
[3] | DEC_OP
[3] | LSQ
exp [5] RSQ
) *| exp10 [0] )
类型:匹配 => 99(99: RSQ
,操作符,RSQUARE)
指令:通过
项目:type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] * RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
规则:type
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:ret[0] -> ( YIELD
[1] | RETURN
) [ exp [0] ] * SEMI
规则:ret
到达状态[36]: ret[0] -> ( YIELD
[1] | RETURN
) [ exp [0] ] SEMI
*
类型:匹配 => 92(92: SEMI
,操作符,SEMI)
指令:通过
项目:if[0] -> IF
LPA
exp [0] * RPA
block [1] [ ELSE
( block [2] | if [3] ) ]
规则:if
到达状态[202]: if[0] -> IF
LPA
exp [0] RPA
* block [1] [ ELSE
( block [2] | if [3] ) ]
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] * SEMI
[ ( exp [2] | var [2] ) ] RPA
block [3]
规则:for
到达状态[72]: for[0] -> FOR
LPA
[ var [0] ] SEMI
[ exp [1] ] SEMI
* [ ( exp [2] | var [2] ) ] RPA
block [3]
类型:匹配 => 92(92: SEMI
,操作符,SEMI)
指令:通过
项目:while[0] -> WHILE
LPA
exp [0] * RPA
block [1]
规则:while
到达状态[203]: while[0] -> WHILE
LPA
exp [0] RPA
* block [1]
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:foreach[0] -> FOREACH
LPA
VARIABLE
ID
[0] COLON
exp [1] * RPA
block [2]
规则:foreach
到达状态[204]: foreach[0] -> FOREACH
LPA
VARIABLE
ID
[0] COLON
exp [1] RPA
* block [2]
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:set[0] -> SET
exp [3] * PROPERTY
exp [4] ASSIGN
exp [2]
规则:set
到达状态[205]: set[0] -> SET
exp [3] PROPERTY
* exp [4] ASSIGN
exp [2]
类型:匹配 => 102(102: PROPERTY
,操作符,PROPERTY)
指令:通过
项目:set[0] -> SET
exp [3] PROPERTY
exp [4] * ASSIGN
exp [2]
规则:set
到达状态[206]: set[0] -> SET
exp [3] PROPERTY
exp [4] ASSIGN
* exp [2]
类型:匹配 => 94(94: ASSIGN
,操作符,ASSIGN)
指令:通过
项目:set[0] -> SET
exp [3] PROPERTY
exp [4] ASSIGN
exp [2] *
规则:set
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:归约 => type[0] -> * ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
指令:翻译 => set 1
项目:invoke[0] -> INVOKE
[0] exp [1] * PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
规则:invoke
到达状态[207]: invoke[0] -> INVOKE
[0] exp [1] PROPERTY
* exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
类型:匹配 => 102(102: PROPERTY
,操作符,PROPERTY)
指令:通过
项目:invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] * PROPERTY
LPA
[ exp_list [3] ] RPA
规则:invoke
到达状态[208]: invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] PROPERTY
* LPA
[ exp_list [3] ] RPA
类型:匹配 => 102(102: PROPERTY
,操作符,PROPERTY)
指令:通过
项目:throw[0] -> THROW
exp [0] * SEMI
规则:throw
到达状态[209]: throw[0] -> THROW
exp [0] SEMI
*
类型:匹配 => 92(92: SEMI
,操作符,SEMI)
指令:通过
项目:map_list[0] -> LITERAL
[1] COLON
[3] exp [2] * [ COMMA
map_list [0] ]
规则:map_list
到达状态[210]: map_list[0] -> LITERAL
[1] COLON
[3] exp [2] [ COMMA
* map_list [0] ]
类型:匹配 => 91(91: COMMA
,操作符,COMMA)
指令:通过 [Action]
到达状态[211]: map[0] -> LBR
[ map_list [0] ] * RBR
类型:归约 => map[0] -> LBR
* [ map_list [0] ] RBR
指令:翻译 => map_list 0
到达状态[212]: map_list[0] -> LITERAL
[1] COLON
[3] exp [2] [ COMMA
map_list [0] ] *
类型:归约 => map_list[0] -> LITERAL
[1] COLON
[3] exp [2] [ COMMA
* map_list [0] ]
指令:翻译 => map_list 0
项目:scope[0] -> exp [0] *
规则:scope
到达状态[55]: func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] ) *
类型:归约 => func[0] -> ( FUNCTION
[10] | YIELD
) [ LSQ
doc_list [0] RSQ
] ( ID
[1] | NOT
[1] ) LPA
[ var_list [2] ] RPA
( PTR_OP
* scope [3] | block [4] )
指令:翻译 => scope 3
到达状态[56]: lambda[0] -> LAMBDA
[1] LPA
[ var_list [2] ] RPA
( PTR_OP
scope [3] | block [4] ) *
类型:归约 => lambda[0] -> LAMBDA
[1] LPA
[ var_list [2] ] RPA
( PTR_OP
* scope [3] | block [4] )
指令:翻译 => scope 3
项目:exp01[0] -> [ exp01 [1] ( EQ_ASSIGN
[2] | ADD_ASSIGN
[2] | SUB_ASSIGN
[2] | MUL_ASSIGN
[2] | DIV_ASSIGN
[2] | AND_ASSIGN
[2] | OR_ASSIGN
[2] | XOR_ASSIGN
[2] | MOD_ASSIGN
[2] ) *] exp0 [0]
规则:exp01
到达状态[47]: exp0[0] -> * exp1 [0] [ QUERY
[4] exp0 [6] COLON
[5] exp0 [7] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp_list[0] -> exp [0] [ COMMA
* exp_list [1] ]
规则:exp_list
到达状态[81]: exp_list[0] -> * exp [0] [ COMMA
exp_list [1] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:exp_list[0] -> exp [0] [ COMMA
exp_list [1] ] *
规则:exp_list
到达状态[196]: exp_list[0] -> exp [0] [ COMMA
exp_list [1] ] *
类型:归约 => exp_list[0] -> exp [0] [ COMMA
* exp_list [1] ]
指令:翻译 => exp_list 1
到达状态[197]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] * RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
类型:归约 => type[0] -> ( ID
[0] [ LPA
[3] * [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
指令:翻译 => exp_list 4
到达状态[198]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] * RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
类型:归约 => type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] * [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
指令:翻译 => exp_list 4
到达状态[199]: call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] * RPA
类型:归约 => call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
* [ exp_list [2] ] RPA
指令:翻译 => exp_list 2
到达状态[200]: array[0] -> LSQ
[ exp_list [0] ] * RSQ
类型:归约 => array[0] -> LSQ
* [ exp_list [0] ] RSQ
指令:翻译 => exp_list 0
到达状态[201]: invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] * RPA
类型:归约 => invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] PROPERTY
LPA
* [ exp_list [3] ] RPA
指令:翻译 => exp_list 3
项目:type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] * RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
规则:type
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] * RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
规则:type
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] * RPA
规则:call
到达状态[82]: call[0] -> CALL
[4] ( LPA
( func [0] | exp [3] ) RPA
| ID
[1] ) LPA
[ exp_list [2] ] RPA
*
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:array[0] -> LSQ
[ exp_list [0] ] * RSQ
规则:array
到达状态[147]: array[0] -> LSQ
[ exp_list [0] ] RSQ
*
类型:匹配 => 99(99: RSQ
,操作符,RSQUARE)
指令:通过
项目:invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] * RPA
规则:invoke
到达状态[213]: invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
*
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过
项目:if[0] -> IF
LPA
exp [0] RPA
* block [1] [ ELSE
( block [2] | if [3] ) ]
规则:if
到达状态[16]: block[0] -> * LBR
[ stmt_list [0] ] RBR
类型:转移
指令:移进
预查:[100: LBR
,操作符,LBRACE]
项目:while[0] -> WHILE
LPA
exp [0] RPA
* block [1]
规则:while
到达状态[16]: block[0] -> * LBR
[ stmt_list [0] ] RBR
类型:转移
指令:移进
预查:[100: LBR
,操作符,LBRACE]
项目:foreach[0] -> FOREACH
LPA
VARIABLE
ID
[0] COLON
exp [1] RPA
* block [2]
规则:foreach
到达状态[16]: block[0] -> * LBR
[ stmt_list [0] ] RBR
类型:转移
指令:移进
预查:[100: LBR
,操作符,LBRACE]
项目:set[0] -> SET
exp [3] PROPERTY
* exp [4] ASSIGN
exp [2]
规则:set
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:set[0] -> SET
exp [3] PROPERTY
exp [4] ASSIGN
* exp [2]
规则:set
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:invoke[0] -> INVOKE
[0] exp [1] PROPERTY
* exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
规则:invoke
到达状态[20]: exp[0] -> * exp01 [0] [ ( INTEGER
[10] | DECIMAL
[10] ) ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
项目:invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] PROPERTY
* LPA
[ exp_list [3] ] RPA
规则:invoke
到达状态[214]: invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] PROPERTY
LPA
* [ exp_list [3] ] RPA
类型:匹配 => 96(96: LPA
,操作符,LPARAN)
指令:通过
项目:throw[0] -> THROW
exp [0] SEMI
*
规则:throw
到达状态[51]: stmt_ctrl[0] -> ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] ) *
类型:归约 => stmt_ctrl[0] -> * ( ret [0] | port [0] | if [0] | for [0] | foreach [0] | while [0] | try [0] | throw [0] )
指令:翻译 => throw 0
项目:map_list[0] -> LITERAL
[1] COLON
[3] exp [2] [ COMMA
* map_list [0] ]
规则:map_list
到达状态[148]: map_list[0] -> * LITERAL
[1] COLON
[3] exp [2] [ COMMA
map_list [0] ]
类型:转移
指令:移进
预查:[2: LITERAL
,字符串,(null)]
项目:map[0] -> LBR
[ map_list [0] ] * RBR
规则:map
到达状态[149]: map[0] -> LBR
[ map_list [0] ] RBR
*
类型:匹配 => 101(101: RBR
,操作符,RBRACE)
指令:通过
项目:map_list[0] -> LITERAL
[1] COLON
[3] exp [2] [ COMMA
map_list [0] ] *
规则:map_list
到达状态[211]: map[0] -> LBR
[ map_list [0] ] * RBR
类型:归约 => map[0] -> LBR
* [ map_list [0] ] RBR
指令:翻译 => map_list 0
到达状态[212]: map_list[0] -> LITERAL
[1] COLON
[3] exp [2] [ COMMA
map_list [0] ] *
类型:归约 => map_list[0] -> LITERAL
[1] COLON
[3] exp [2] [ COMMA
* map_list [0] ]
指令:翻译 => map_list 0
项目:invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
*
规则:invoke
到达状态[76]: type[0] -> ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] ) *
类型:归约 => type[0] -> * ( ID
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | INTEGER
[0] | DECIMAL
[0] | LITERAL
[0] [ LPA
[3] [ exp_list [4] ] RPA
] | CHARACTER
[0] | BOOLEAN
[0] | LPA
exp [1] RPA
| call [1] | lambda [2] | set [1] | invoke [1] | array [1] | map [1] )
指令:翻译 => invoke 1
项目:invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] PROPERTY
LPA
* [ exp_list [3] ] RPA
规则:invoke
到达状态[81]: exp_list[0] -> * exp [0] [ COMMA
exp_list [1] ]
类型:转移
指令:移进
预查:[0: ID
,标识符,(null)] [1: BOOLEAN
,布尔,(null)] [2: LITERAL
,字符串,(null)] [3: CHARACTER
,字符,(null)] [4: INTEGER
,整数,(null)] [5: DECIMAL
,实数,(null)] [44: CALL
,关键字,CALL] [49: LAMBDA
,关键字,LAMBDA] [50: SET
,关键字,SET] [51: INVOKE
,关键字,INVOKE] [57: INC_OP
,操作符,PLUS_PLUS] [58: DEC_OP
,操作符,MINUS_MINUS] [86: NOT
,操作符,BIT_NOT] [87: NOT_OP
,操作符,LOGICAL_NOT] [96: LPA
,操作符,LPARAN] [98: LSQ
,操作符,LSQUARE] [100: LBR
,操作符,LBRACE]
到达状态[213]: invoke[0] -> INVOKE
[0] exp [1] PROPERTY
exp [2] PROPERTY
LPA
[ exp_list [3] ] RPA
*
类型:匹配 => 97(97: RPA
,操作符,RPARAN)
指令:通过