compUnit |-- decl | `-- constDecl | |-- Const: const | |-- bType | | `-- Int: int | |-- constDef | | |-- Ident: SHIFT_TABLE | | |-- L_BRACKET: [ | | |-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 16 | | |-- R_BRACKET: ] | | |-- Assign: = | | `-- constInitVal | | |-- L_BRACE: { | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 1 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 2 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 4 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 8 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 16 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 32 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 64 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 128 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 256 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 512 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 1024 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 2048 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 4096 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 8192 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 16384 | | |-- Comma: , | | |-- constInitVal | | | `-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 32768 | | `-- R_BRACE: } | `-- Semi: ; |-- funcDef | |-- funcType | | `-- Int: int | |-- Ident: long_func | |-- L_PAREN: ( | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Int: int | | |-- varDef | | | `-- Ident: ans | | |-- Comma: , | | |-- varDef | | | `-- Ident: i | | |-- Comma: , | | |-- varDef | | | `-- Ident: x | | |-- Comma: , | | |-- varDef | | | `-- Ident: y | | |-- Comma: , | | |-- varDef | | | `-- Ident: cur | | `-- Semi: ; | |-- blockItem | | `-- stmt | | `-- block | | |-- L_BRACE: { | | |-- blockItem | | | `-- decl | | | `-- varDecl | | | |-- bType | | | | `-- Int: int | | | |-- varDef | | | | |-- Ident: pl | | | | |-- Assign: = | | | | `-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 2 | | | |-- Comma: , | | | |-- varDef | | | | |-- Ident: pr | | | | |-- Assign: = | | | | `-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 0 | | | |-- Comma: , | | | |-- varDef | | | | |-- Ident: pres | | | | |-- Assign: = | | | | `-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 1 | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- While: while | | | |-- L_PAREN: ( | | | |-- cond | | | | `-- lOrExp | | | | `-- lAndExp | | | | `-- eqExp | | | | `-- relExp | | | | |-- relExp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: pr | | | | |-- GtOp: > | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 0 | | | |-- R_PAREN: ) | | | `-- stmt | | | `-- block | | | |-- L_BRACE: { | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: ans | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 0 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: i | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 0 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: x | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: pr | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: y | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 1 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- While: while | | | | |-- L_PAREN: ( | | | | |-- cond | | | | | `-- lOrExp | | | | | `-- lAndExp | | | | | `-- eqExp | | | | | `-- relExp | | | | | |-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: i | | | | | |-- LtOp: < | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 16 | | | | |-- R_PAREN: ) | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- If: if | | | | | |-- L_PAREN: ( | | | | | |-- cond | | | | | | `-- lOrExp | | | | | | `-- lAndExp | | | | | | |-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AndOp: && | | | | | | `-- eqExp | | | | | | `-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | |-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: y | | | | | | |-- ModOp: % | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 2 | | | | | |-- R_PAREN: ) | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: ans | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 1 | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | |-- L_BRACKET: [ | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: i | | | | | | | `-- R_BRACKET: ] | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: x | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | |-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: x | | | | | | |-- DivOp: / | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 2 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: y | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | |-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: y | | | | | | |-- DivOp: / | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 2 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: i | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: i | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 1 | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | |-- If: if | | | | |-- L_PAREN: ( | | | | |-- cond | | | | | `-- lOrExp | | | | | `-- lAndExp | | | | | `-- eqExp | | | | | `-- relExp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: ans | | | | |-- R_PAREN: ) | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | |-- Ident: ml | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: pres | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | |-- Ident: mr | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: pl | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | |-- Ident: mres | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- While: while | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: mr | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: i | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: mr | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 1 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- While: while | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 16 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- ModOp: % | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- AddOp: + | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | |-- MulOp: * | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | |-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- AddOp: + | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- decl | | | | | | | | | `-- varDecl | | | | | | | | | |-- bType | | | | | | | | | | `-- Int: int | | | | | | | | | |-- varDef | | | | | | | | | | |-- Ident: al | | | | | | | | | | |-- Assign: = | | | | | | | | | | `-- initVal | | | | | | | | | | `-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: mres | | | | | | | | | |-- Comma: , | | | | | | | | | |-- varDef | | | | | | | | | | |-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | `-- initVal | | | | | | | | | | `-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ml | | | | | | | | | |-- Comma: , | | | | | | | | | |-- varDef | | | | | | | | | | `-- Ident: sum | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | |-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | `-- block | | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- Else: else | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | |-- GtOp: > | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- While: while | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | |-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: mres | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | |-- Ident: al | | | | | | | | | |-- Assign: = | | | | | | | | | `-- initVal | | | | | | | | | `-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ml | | | | | | | | |-- Comma: , | | | | | | | | |-- varDef | | | | | | | | | |-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | `-- initVal | | | | | | | | | `-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ml | | | | | | | | |-- Comma: , | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: sum | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- While: while | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: sum | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- GtOp: > | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: sum | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: al | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ml | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: mr | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 1 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- GeOp: >= | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 15 | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- GtOp: > | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- GtOp: > | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0x7fff | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 65536 | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: mr | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: ans | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: mres | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: pres | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: ans | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | |-- Ident: ml | | | | | | |-- Assign: = | | | | | | `-- initVal | | | | | | `-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: pl | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | |-- Ident: mr | | | | | | |-- Assign: = | | | | | | `-- initVal | | | | | | `-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: pl | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | |-- Ident: mres | | | | | | |-- Assign: = | | | | | | `-- initVal | | | | | | `-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 0 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- While: while | | | | | |-- L_PAREN: ( | | | | | |-- cond | | | | | | `-- lOrExp | | | | | | `-- lAndExp | | | | | | `-- eqExp | | | | | | `-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: mr | | | | | |-- R_PAREN: ) | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: ans | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: i | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: x | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: mr | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: y | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 1 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- While: while | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: i | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 16 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | |-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- AddOp: + | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: i | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 1 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: ans | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | |-- Ident: al | | | | | | | | | |-- Assign: = | | | | | | | | | `-- initVal | | | | | | | | | `-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: mres | | | | | | | | |-- Comma: , | | | | | | | | |-- varDef | | | | | | | | | |-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | `-- initVal | | | | | | | | | `-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ml | | | | | | | | |-- Comma: , | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: sum | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- While: while | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: sum | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- GtOp: > | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: sum | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: al | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: mres | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | |-- Ident: al | | | | | | | | |-- Assign: = | | | | | | | | `-- initVal | | | | | | | | `-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ml | | | | | | | |-- Comma: , | | | | | | | |-- varDef | | | | | | | | |-- Ident: c | | | | | | | | |-- Assign: = | | | | | | | | `-- initVal | | | | | | | | `-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ml | | | | | | | |-- Comma: , | | | | | | | |-- varDef | | | | | | | | `-- Ident: sum | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- While: while | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: al | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- While: while | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 16 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- ModOp: % | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- ModOp: % | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- AddOp: + | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: sum | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: al | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- While: while | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 16 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- ModOp: % | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- AddOp: + | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- GtOp: > | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 15 | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- MulOp: * | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: al | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: sum | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: al | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: ml | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: ans | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: x | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: mr | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: y | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 1 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- GeOp: >= | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 15 | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- GtOp: > | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- GtOp: > | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0x7fff | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 65536 | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: x | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: mr | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: ans | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: mres | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: pl | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: ans | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: x | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: pr | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: y | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 1 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- If: if | | | | |-- L_PAREN: ( | | | | |-- cond | | | | | `-- lOrExp | | | | | `-- lAndExp | | | | | `-- eqExp | | | | | `-- relExp | | | | | |-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: y | | | | | |-- GeOp: >= | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 15 | | | | |-- R_PAREN: ) | | | | |-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- Else: else | | | | `-- stmt | | | | |-- If: if | | | | |-- L_PAREN: ( | | | | |-- cond | | | | | `-- lOrExp | | | | | `-- lAndExp | | | | | `-- eqExp | | | | | `-- relExp | | | | | |-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: y | | | | | |-- GtOp: > | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 0 | | | | |-- R_PAREN: ) | | | | |-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- GtOp: > | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0x7fff | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | |-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- AddOp: + | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 65536 | | | | | | | | | |-- SubOp: - | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- AddOp: + | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | |-- L_BRACKET: [ | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | `-- R_BRACKET: ] | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- Else: else | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: x | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: pr | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: ans | | | | `-- Semi: ; | | | `-- R_BRACE: } | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | `-- Ident: ans | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: pres | | | `-- Semi: ; | | `-- R_BRACE: } | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putint | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: ans | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 10 | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- stmt | | `-- block | | |-- L_BRACE: { | | |-- blockItem | | | `-- decl | | | `-- varDecl | | | |-- bType | | | | `-- Int: int | | | |-- varDef | | | | |-- Ident: pl | | | | |-- Assign: = | | | | `-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 2 | | | |-- Comma: , | | | |-- varDef | | | | |-- Ident: pr | | | | |-- Assign: = | | | | `-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 1 | | | |-- Comma: , | | | |-- varDef | | | | |-- Ident: pres | | | | |-- Assign: = | | | | `-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 1 | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- While: while | | | |-- L_PAREN: ( | | | |-- cond | | | | `-- lOrExp | | | | `-- lAndExp | | | | `-- eqExp | | | | `-- relExp | | | | |-- relExp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: pr | | | | |-- GtOp: > | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 0 | | | |-- R_PAREN: ) | | | `-- stmt | | | `-- block | | | |-- L_BRACE: { | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: ans | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 0 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: i | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 0 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: x | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: pr | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: y | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 1 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- While: while | | | | |-- L_PAREN: ( | | | | |-- cond | | | | | `-- lOrExp | | | | | `-- lAndExp | | | | | `-- eqExp | | | | | `-- relExp | | | | | |-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: i | | | | | |-- LtOp: < | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 16 | | | | |-- R_PAREN: ) | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- If: if | | | | | |-- L_PAREN: ( | | | | | |-- cond | | | | | | `-- lOrExp | | | | | | `-- lAndExp | | | | | | |-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AndOp: && | | | | | | `-- eqExp | | | | | | `-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | |-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: y | | | | | | |-- ModOp: % | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 2 | | | | | |-- R_PAREN: ) | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: ans | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 1 | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | |-- L_BRACKET: [ | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: i | | | | | | | `-- R_BRACKET: ] | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: x | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | |-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: x | | | | | | |-- DivOp: / | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 2 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: y | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | |-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: y | | | | | | |-- DivOp: / | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 2 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: i | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: i | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 1 | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | |-- If: if | | | | |-- L_PAREN: ( | | | | |-- cond | | | | | `-- lOrExp | | | | | `-- lAndExp | | | | | `-- eqExp | | | | | `-- relExp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: ans | | | | |-- R_PAREN: ) | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | |-- Ident: ml | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: pres | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | |-- Ident: mr | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: pl | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | |-- Ident: mres | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- While: while | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: mr | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: i | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: mr | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 1 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- While: while | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 16 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- ModOp: % | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- AddOp: + | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | |-- MulOp: * | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | |-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- AddOp: + | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- decl | | | | | | | | | `-- varDecl | | | | | | | | | |-- bType | | | | | | | | | | `-- Int: int | | | | | | | | | |-- varDef | | | | | | | | | | |-- Ident: al | | | | | | | | | | |-- Assign: = | | | | | | | | | | `-- initVal | | | | | | | | | | `-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: mres | | | | | | | | | |-- Comma: , | | | | | | | | | |-- varDef | | | | | | | | | | |-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | `-- initVal | | | | | | | | | | `-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ml | | | | | | | | | |-- Comma: , | | | | | | | | | |-- varDef | | | | | | | | | | `-- Ident: sum | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | |-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | `-- block | | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- Else: else | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | |-- GtOp: > | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- While: while | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | |-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: mres | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | |-- Ident: al | | | | | | | | | |-- Assign: = | | | | | | | | | `-- initVal | | | | | | | | | `-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ml | | | | | | | | |-- Comma: , | | | | | | | | |-- varDef | | | | | | | | | |-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | `-- initVal | | | | | | | | | `-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ml | | | | | | | | |-- Comma: , | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: sum | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- While: while | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: sum | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- GtOp: > | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: sum | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: al | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ml | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: mr | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 1 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- GeOp: >= | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 15 | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- GtOp: > | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- GtOp: > | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0x7fff | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 65536 | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: mr | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: ans | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: mres | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: pres | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: ans | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | |-- Ident: ml | | | | | | |-- Assign: = | | | | | | `-- initVal | | | | | | `-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: pl | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | |-- Ident: mr | | | | | | |-- Assign: = | | | | | | `-- initVal | | | | | | `-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: pl | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | |-- Ident: mres | | | | | | |-- Assign: = | | | | | | `-- initVal | | | | | | `-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 0 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- While: while | | | | | |-- L_PAREN: ( | | | | | |-- cond | | | | | | `-- lOrExp | | | | | | `-- lAndExp | | | | | | `-- eqExp | | | | | | `-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: mr | | | | | |-- R_PAREN: ) | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: ans | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: i | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: x | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: mr | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: y | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 1 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- While: while | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: i | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 16 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | |-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- AddOp: + | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: i | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 1 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: ans | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | |-- Ident: al | | | | | | | | | |-- Assign: = | | | | | | | | | `-- initVal | | | | | | | | | `-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: mres | | | | | | | | |-- Comma: , | | | | | | | | |-- varDef | | | | | | | | | |-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | `-- initVal | | | | | | | | | `-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ml | | | | | | | | |-- Comma: , | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: sum | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- While: while | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: sum | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- GtOp: > | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: sum | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: al | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: mres | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | |-- Ident: al | | | | | | | | |-- Assign: = | | | | | | | | `-- initVal | | | | | | | | `-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ml | | | | | | | |-- Comma: , | | | | | | | |-- varDef | | | | | | | | |-- Ident: c | | | | | | | | |-- Assign: = | | | | | | | | `-- initVal | | | | | | | | `-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ml | | | | | | | |-- Comma: , | | | | | | | |-- varDef | | | | | | | | `-- Ident: sum | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- While: while | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: al | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- While: while | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 16 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- ModOp: % | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- ModOp: % | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- AddOp: + | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: sum | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: al | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- While: while | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 16 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- ModOp: % | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- AddOp: + | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- GtOp: > | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 15 | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- MulOp: * | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: al | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: sum | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: al | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: ml | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: ans | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: x | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: mr | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: y | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 1 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- GeOp: >= | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 15 | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- GtOp: > | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- GtOp: > | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0x7fff | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 65536 | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: x | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: mr | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: ans | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: mres | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: pl | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: ans | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: x | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: pr | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: y | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 1 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- If: if | | | | |-- L_PAREN: ( | | | | |-- cond | | | | | `-- lOrExp | | | | | `-- lAndExp | | | | | `-- eqExp | | | | | `-- relExp | | | | | |-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: y | | | | | |-- GeOp: >= | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 15 | | | | |-- R_PAREN: ) | | | | |-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- Else: else | | | | `-- stmt | | | | |-- If: if | | | | |-- L_PAREN: ( | | | | |-- cond | | | | | `-- lOrExp | | | | | `-- lAndExp | | | | | `-- eqExp | | | | | `-- relExp | | | | | |-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: y | | | | | |-- GtOp: > | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 0 | | | | |-- R_PAREN: ) | | | | |-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- GtOp: > | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0x7fff | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | |-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- AddOp: + | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 65536 | | | | | | | | | |-- SubOp: - | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- AddOp: + | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | |-- L_BRACKET: [ | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | `-- R_BRACKET: ] | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- Else: else | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: x | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: pr | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: ans | | | | `-- Semi: ; | | | `-- R_BRACE: } | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | `-- Ident: ans | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: pres | | | `-- Semi: ; | | `-- R_BRACE: } | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putint | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: ans | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 10 | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- lVal | | | `-- Ident: cur | | |-- Assign: = | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 2 | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- While: while | | |-- L_PAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: cur | | | |-- LtOp: < | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 16 | | |-- R_PAREN: ) | | `-- stmt | | `-- block | | |-- L_BRACE: { | | |-- blockItem | | | `-- stmt | | | `-- block | | | |-- L_BRACE: { | | | |-- blockItem | | | | `-- decl | | | | `-- varDecl | | | | |-- bType | | | | | `-- Int: int | | | | |-- varDef | | | | | |-- Ident: pl | | | | | |-- Assign: = | | | | | `-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 2 | | | | |-- Comma: , | | | | |-- varDef | | | | | |-- Ident: pr | | | | | |-- Assign: = | | | | | `-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: cur | | | | |-- Comma: , | | | | |-- varDef | | | | | |-- Ident: pres | | | | | |-- Assign: = | | | | | `-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 1 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- While: while | | | | |-- L_PAREN: ( | | | | |-- cond | | | | | `-- lOrExp | | | | | `-- lAndExp | | | | | `-- eqExp | | | | | `-- relExp | | | | | |-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: pr | | | | | |-- GtOp: > | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 0 | | | | |-- R_PAREN: ) | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 0 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: i | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 0 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: x | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: pr | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: y | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 1 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- While: while | | | | | |-- L_PAREN: ( | | | | | |-- cond | | | | | | `-- lOrExp | | | | | | `-- lAndExp | | | | | | `-- eqExp | | | | | | `-- relExp | | | | | | |-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: i | | | | | | |-- LtOp: < | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 16 | | | | | |-- R_PAREN: ) | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | |-- L_BRACKET: [ | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | `-- R_BRACKET: ] | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: x | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: y | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: i | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: i | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 1 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- If: if | | | | | |-- L_PAREN: ( | | | | | |-- cond | | | | | | `-- lOrExp | | | | | | `-- lAndExp | | | | | | `-- eqExp | | | | | | `-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: ans | | | | | |-- R_PAREN: ) | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | |-- Ident: ml | | | | | | | | |-- Assign: = | | | | | | | | `-- initVal | | | | | | | | `-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: pres | | | | | | | |-- Comma: , | | | | | | | |-- varDef | | | | | | | | |-- Ident: mr | | | | | | | | |-- Assign: = | | | | | | | | `-- initVal | | | | | | | | `-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: pl | | | | | | | |-- Comma: , | | | | | | | |-- varDef | | | | | | | | |-- Ident: mres | | | | | | | | |-- Assign: = | | | | | | | | `-- initVal | | | | | | | | `-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- While: while | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: mr | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: mr | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- While: while | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 16 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- ModOp: % | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- AddOp: + | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- decl | | | | | | | | | | `-- varDecl | | | | | | | | | | |-- bType | | | | | | | | | | | `-- Int: int | | | | | | | | | | |-- varDef | | | | | | | | | | | |-- Ident: al | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | `-- initVal | | | | | | | | | | | `-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: mres | | | | | | | | | | |-- Comma: , | | | | | | | | | | |-- varDef | | | | | | | | | | | |-- Ident: c | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | `-- initVal | | | | | | | | | | | `-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ml | | | | | | | | | | |-- Comma: , | | | | | | | | | | |-- varDef | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: al | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- While: while | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | |-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | |-- stmt | | | | | | | | | | | | | `-- block | | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | | `-- block | | | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | | |-- Else: else | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: al | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- While: while | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | |-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | |-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | | |-- GtOp: > | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | |-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- Else: else | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- While: while | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | |-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | `-- block | | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: al | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: mres | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- decl | | | | | | | | | `-- varDecl | | | | | | | | | |-- bType | | | | | | | | | | `-- Int: int | | | | | | | | | |-- varDef | | | | | | | | | | |-- Ident: al | | | | | | | | | | |-- Assign: = | | | | | | | | | | `-- initVal | | | | | | | | | | `-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ml | | | | | | | | | |-- Comma: , | | | | | | | | | |-- varDef | | | | | | | | | | |-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | `-- initVal | | | | | | | | | | `-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ml | | | | | | | | | |-- Comma: , | | | | | | | | | |-- varDef | | | | | | | | | | `-- Ident: sum | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | |-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | `-- block | | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- Else: else | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | |-- GtOp: > | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- While: while | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | |-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ml | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: mr | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- GeOp: >= | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 15 | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- GtOp: > | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- GtOp: > | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0x7fff | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 65536 | | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: mr | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: mres | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: pres | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: ans | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | |-- Ident: ml | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: pl | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | |-- Ident: mr | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: pl | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | |-- Ident: mres | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- While: while | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: mr | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: i | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: mr | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 1 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- While: while | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 16 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- ModOp: % | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- AddOp: + | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | |-- MulOp: * | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | |-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- AddOp: + | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- decl | | | | | | | | | `-- varDecl | | | | | | | | | |-- bType | | | | | | | | | | `-- Int: int | | | | | | | | | |-- varDef | | | | | | | | | | |-- Ident: al | | | | | | | | | | |-- Assign: = | | | | | | | | | | `-- initVal | | | | | | | | | | `-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: mres | | | | | | | | | |-- Comma: , | | | | | | | | | |-- varDef | | | | | | | | | | |-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | `-- initVal | | | | | | | | | | `-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ml | | | | | | | | | |-- Comma: , | | | | | | | | | |-- varDef | | | | | | | | | | `-- Ident: sum | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | |-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | `-- block | | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- Else: else | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | |-- GtOp: > | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- While: while | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | |-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: mres | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | |-- Ident: al | | | | | | | | | |-- Assign: = | | | | | | | | | `-- initVal | | | | | | | | | `-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ml | | | | | | | | |-- Comma: , | | | | | | | | |-- varDef | | | | | | | | | |-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | `-- initVal | | | | | | | | | `-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ml | | | | | | | | |-- Comma: , | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: sum | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- While: while | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: sum | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- GtOp: > | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: sum | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: al | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ml | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: mr | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 1 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- GeOp: >= | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 15 | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- GtOp: > | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- GtOp: > | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0x7fff | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 65536 | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: mr | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: ans | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: mres | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: pl | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: ans | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: x | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: pr | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: y | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 1 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- If: if | | | | | |-- L_PAREN: ( | | | | | |-- cond | | | | | | `-- lOrExp | | | | | | `-- lAndExp | | | | | | `-- eqExp | | | | | | `-- relExp | | | | | | |-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: y | | | | | | |-- GeOp: >= | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 15 | | | | | |-- R_PAREN: ) | | | | | |-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- Else: else | | | | | `-- stmt | | | | | |-- If: if | | | | | |-- L_PAREN: ( | | | | | |-- cond | | | | | | `-- lOrExp | | | | | | `-- lAndExp | | | | | | `-- eqExp | | | | | | `-- relExp | | | | | | |-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: y | | | | | | |-- GtOp: > | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 0 | | | | | |-- R_PAREN: ) | | | | | |-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- GtOp: > | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0x7fff | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 65536 | | | | | | | | | | |-- SubOp: - | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- Else: else | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: ans | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: x | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: pr | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: ans | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: ans | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: pres | | | | `-- Semi: ; | | | `-- R_BRACE: } | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putint | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: ans | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putch | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 10 | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | `-- Ident: cur | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: cur | | | | |-- AddOp: + | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 1 | | | `-- Semi: ; | | `-- R_BRACE: } | |-- blockItem | | `-- stmt | | |-- lVal | | | `-- Ident: cur | | |-- Assign: = | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 0 | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- While: while | | |-- L_PAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: cur | | | |-- LtOp: < | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 16 | | |-- R_PAREN: ) | | `-- stmt | | `-- block | | |-- L_BRACE: { | | |-- blockItem | | | `-- stmt | | | `-- block | | | |-- L_BRACE: { | | | |-- blockItem | | | | `-- decl | | | | `-- varDecl | | | | |-- bType | | | | | `-- Int: int | | | | |-- varDef | | | | | |-- Ident: pl | | | | | |-- Assign: = | | | | | `-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 2 | | | | |-- Comma: , | | | | |-- varDef | | | | | |-- Ident: pr | | | | | |-- Assign: = | | | | | `-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: cur | | | | |-- Comma: , | | | | |-- varDef | | | | | |-- Ident: pres | | | | | |-- Assign: = | | | | | `-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 1 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- While: while | | | | |-- L_PAREN: ( | | | | |-- cond | | | | | `-- lOrExp | | | | | `-- lAndExp | | | | | `-- eqExp | | | | | `-- relExp | | | | | |-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: pr | | | | | |-- GtOp: > | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 0 | | | | |-- R_PAREN: ) | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 0 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: i | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 0 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: x | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: pr | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: y | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 1 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- While: while | | | | | |-- L_PAREN: ( | | | | | |-- cond | | | | | | `-- lOrExp | | | | | | `-- lAndExp | | | | | | `-- eqExp | | | | | | `-- relExp | | | | | | |-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: i | | | | | | |-- LtOp: < | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 16 | | | | | |-- R_PAREN: ) | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | |-- L_BRACKET: [ | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | `-- R_BRACKET: ] | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: x | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: y | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: i | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: i | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 1 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- If: if | | | | | |-- L_PAREN: ( | | | | | |-- cond | | | | | | `-- lOrExp | | | | | | `-- lAndExp | | | | | | `-- eqExp | | | | | | `-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: ans | | | | | |-- R_PAREN: ) | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | |-- Ident: ml | | | | | | | | |-- Assign: = | | | | | | | | `-- initVal | | | | | | | | `-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: pres | | | | | | | |-- Comma: , | | | | | | | |-- varDef | | | | | | | | |-- Ident: mr | | | | | | | | |-- Assign: = | | | | | | | | `-- initVal | | | | | | | | `-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: pl | | | | | | | |-- Comma: , | | | | | | | |-- varDef | | | | | | | | |-- Ident: mres | | | | | | | | |-- Assign: = | | | | | | | | `-- initVal | | | | | | | | `-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- While: while | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: mr | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: mr | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- While: while | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 16 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- ModOp: % | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- AddOp: + | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- decl | | | | | | | | | | `-- varDecl | | | | | | | | | | |-- bType | | | | | | | | | | | `-- Int: int | | | | | | | | | | |-- varDef | | | | | | | | | | | |-- Ident: al | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | `-- initVal | | | | | | | | | | | `-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: mres | | | | | | | | | | |-- Comma: , | | | | | | | | | | |-- varDef | | | | | | | | | | | |-- Ident: c | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | `-- initVal | | | | | | | | | | | `-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ml | | | | | | | | | | |-- Comma: , | | | | | | | | | | |-- varDef | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: al | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- While: while | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | |-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | |-- stmt | | | | | | | | | | | | | `-- block | | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | | `-- block | | | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | | |-- Else: else | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: al | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- While: while | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | |-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | |-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | | |-- GtOp: > | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | |-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- Else: else | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- While: while | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | |-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | `-- block | | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: al | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: mres | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- decl | | | | | | | | | `-- varDecl | | | | | | | | | |-- bType | | | | | | | | | | `-- Int: int | | | | | | | | | |-- varDef | | | | | | | | | | |-- Ident: al | | | | | | | | | | |-- Assign: = | | | | | | | | | | `-- initVal | | | | | | | | | | `-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ml | | | | | | | | | |-- Comma: , | | | | | | | | | |-- varDef | | | | | | | | | | |-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | `-- initVal | | | | | | | | | | `-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ml | | | | | | | | | |-- Comma: , | | | | | | | | | |-- varDef | | | | | | | | | | `-- Ident: sum | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | |-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | `-- block | | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- Else: else | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | |-- GtOp: > | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- While: while | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | |-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ml | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: mr | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- GeOp: >= | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 15 | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- GtOp: > | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- GtOp: > | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0x7fff | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 65536 | | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: mr | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: mres | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: pres | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: ans | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | |-- Ident: ml | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: pl | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | |-- Ident: mr | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: pl | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | |-- Ident: mres | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- While: while | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: mr | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: i | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: mr | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 1 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- While: while | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 16 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- ModOp: % | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- AddOp: + | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | |-- MulOp: * | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: i | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | |-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- AddOp: + | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- decl | | | | | | | | | `-- varDecl | | | | | | | | | |-- bType | | | | | | | | | | `-- Int: int | | | | | | | | | |-- varDef | | | | | | | | | | |-- Ident: al | | | | | | | | | | |-- Assign: = | | | | | | | | | | `-- initVal | | | | | | | | | | `-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: mres | | | | | | | | | |-- Comma: , | | | | | | | | | |-- varDef | | | | | | | | | | |-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | `-- initVal | | | | | | | | | | `-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ml | | | | | | | | | |-- Comma: , | | | | | | | | | |-- varDef | | | | | | | | | | `-- Ident: sum | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | |-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | `-- block | | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- Else: else | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | |-- GtOp: > | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- While: while | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | |-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: al | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: sum | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: mres | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | |-- Ident: al | | | | | | | | | |-- Assign: = | | | | | | | | | `-- initVal | | | | | | | | | `-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ml | | | | | | | | |-- Comma: , | | | | | | | | |-- varDef | | | | | | | | | |-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | `-- initVal | | | | | | | | | `-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ml | | | | | | | | |-- Comma: , | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: sum | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- While: while | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | |-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- If: if | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- cond | | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | |-- eqExp | | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | | |-- EqOp: == | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | `-- block | | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- Else: else | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: sum | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: i | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- While: while | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- If: if | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- GtOp: > | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: i | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: c | | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | `-- Semi: ; | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- While: while | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- cond | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | |-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- LtOp: < | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 16 | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | `-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- If: if | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- cond | | | | | | | | | | | | `-- lOrExp | | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | | |-- lAndExp | | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | | |-- AndOp: && | | | | | | | | | | | | `-- eqExp | | | | | | | | | | | | `-- relExp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- ModOp: % | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | | | `-- stmt | | | | | | | | | | | `-- block | | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | | |-- blockItem | | | | | | | | | | | | `-- stmt | | | | | | | | | | | | |-- lVal | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | | |-- MulOp: * | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 2 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: i | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: al | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: sum | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: al | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ml | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: x | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: mr | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: y | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 1 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- GeOp: >= | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 15 | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- LtOp: < | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: y | | | | | | | | |-- GtOp: > | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | |-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- GtOp: > | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0x7fff | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 65536 | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | | |-- exp | | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ans | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | |-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- DivOp: / | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: mr | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: ans | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: mres | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: pl | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: ans | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: x | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: pr | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: y | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 1 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- If: if | | | | | |-- L_PAREN: ( | | | | | |-- cond | | | | | | `-- lOrExp | | | | | | `-- lAndExp | | | | | | `-- eqExp | | | | | | `-- relExp | | | | | | |-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: y | | | | | | |-- GeOp: >= | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 15 | | | | | |-- R_PAREN: ) | | | | | |-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0xffff | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- Else: else | | | | | `-- stmt | | | | | |-- If: if | | | | | |-- L_PAREN: ( | | | | | |-- cond | | | | | | `-- lOrExp | | | | | | `-- lAndExp | | | | | | `-- eqExp | | | | | | `-- relExp | | | | | | |-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: y | | | | | | |-- GtOp: > | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 0 | | | | | |-- R_PAREN: ) | | | | | |-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: x | | | | | | | | |-- GtOp: > | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0x7fff | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | |-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: x | | | | | | | | | | |-- DivOp: / | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: y | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | `-- Semi: ; | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ans | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | |-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: x | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 65536 | | | | | | | | | | |-- SubOp: - | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | |-- addExp | | | | | | | | | | | | |-- addExp | | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | | `-- number | | | | | | | | | | | | | `-- IntConst: 15 | | | | | | | | | | | | |-- SubOp: - | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: y | | | | | | | | | | | |-- AddOp: + | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ans | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: x | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | |-- Ident: SHIFT_TABLE | | | | | | | | | |-- L_BRACKET: [ | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: y | | | | | | | | | `-- R_BRACKET: ] | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- Else: else | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: ans | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: x | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: pr | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: ans | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: ans | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: pres | | | | `-- Semi: ; | | | `-- R_BRACE: } | | |-- blockItem | | | `-- stmt | | | |-- If: if | | | |-- L_PAREN: ( | | | |-- cond | | | | `-- lOrExp | | | | `-- lAndExp | | | | `-- eqExp | | | | |-- eqExp | | | | | `-- relExp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | |-- Ident: SHIFT_TABLE | | | | | |-- L_BRACKET: [ | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: cur | | | | | `-- R_BRACKET: ] | | | | |-- NeOp: != | | | | `-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: ans | | | |-- R_PAREN: ) | | | `-- stmt | | | |-- Return: return | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 1 | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | `-- Ident: cur | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: cur | | | | |-- AddOp: + | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 1 | | | `-- Semi: ; | | `-- R_BRACE: } | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 0 | | `-- Semi: ; | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Int: int | |-- Ident: main | |-- L_PAREN: ( | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: long_func | | | |-- L_PAREN: ( | | | `-- R_PAREN: ) | | `-- Semi: ; | `-- R_BRACE: } `-- EOF: