compUnit |-- funcDef | |-- funcType | | `-- Int: int | |-- Ident: fib | |-- L_PAREN: ( | |-- funcFParams | | `-- funcFParam | | |-- bType | | | `-- Int: int | | `-- Ident: n | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- stmt | | |-- If: if | | |-- L_PAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: n | | | |-- LeOp: <= | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 2 | | |-- R_PAREN: ) | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 1 | | `-- Semi: ; | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Int: int | | |-- varDef | | | `-- Ident: n1 | | `-- Semi: ; | |-- blockItem | | `-- stmt | | `-- block | | |-- L_BRACE: { | | |-- blockItem | | | `-- decl | | | `-- varDecl | | | |-- bType | | | | `-- Int: int | | | |-- varDef | | | | `-- Ident: neg_b | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | `-- block | | | |-- L_BRACE: { | | | |-- blockItem | | | | `-- decl | | | | `-- varDecl | | | | |-- bType | | | | | `-- Int: int | | | | |-- varDef | | | | | `-- Ident: not_a | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a0 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a1 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a2 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a3 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a4 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a5 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a6 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a7 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a8 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a9 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a10 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a11 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a12 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a13 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a14 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a15 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | |-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 1 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a0 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a1 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a2 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a3 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a4 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a5 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a6 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a7 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a8 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a9 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a10 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a11 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a12 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a13 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a14 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a15 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: o0 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o1 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o2 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o3 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o4 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o5 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o6 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o7 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o8 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o9 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o10 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o11 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o12 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o13 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o14 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o15 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o0 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o1 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o2 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o3 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o4 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o5 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o6 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o7 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o8 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o9 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o10 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o11 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o12 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o13 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o14 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o15 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o15 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o15 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o14 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o13 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o12 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o11 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o10 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o9 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o8 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o7 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o6 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o5 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o4 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o3 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o2 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o1 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o0 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: cout | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a0 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a1 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a2 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a3 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a4 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a5 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a6 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a7 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a8 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a9 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a10 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a11 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a12 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a13 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a14 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a15 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | |-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | `-- initVal | | | | | | | | `-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a0 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a0 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a0 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a1 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a1 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a1 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a1 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a2 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a2 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a2 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a3 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a3 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a3 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a3 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a4 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a4 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a4 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a4 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a5 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a5 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a5 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a5 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a6 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a6 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a6 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a6 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a7 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a7 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a7 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a7 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a8 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a8 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a8 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a8 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a9 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a9 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a9 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a9 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a10 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a10 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a10 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a10 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a11 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a11 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a11 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a11 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a12 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a12 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a12 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a12 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a13 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a13 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a13 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a13 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a14 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a14 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a14 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a14 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a15 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a15 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a15 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a15 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: b0 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b1 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b2 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b3 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b4 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b5 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b6 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b7 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b8 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b9 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b10 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b11 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b12 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b13 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b14 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b15 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | |-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | `-- initVal | | | | | | | | `-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b0 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b0 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b0 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b1 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b1 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b1 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b1 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b2 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b2 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b2 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b3 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b3 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b3 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b3 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b4 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b4 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b4 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b4 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b5 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b5 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b5 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b5 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b6 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b6 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b6 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b6 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b7 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b7 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b7 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b7 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b8 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b8 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b8 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b8 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b9 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b9 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b9 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b9 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b10 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b10 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b10 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b10 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b11 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b11 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b11 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b11 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b12 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b12 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b12 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b12 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b13 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b13 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b13 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b13 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b14 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b14 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b14 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b14 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b15 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b15 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b15 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b15 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: c0 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c1 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c2 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c3 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c4 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c5 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c6 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c7 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c8 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c9 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c10 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c11 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c12 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c13 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c14 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: s0 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s1 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s2 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s3 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s4 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s5 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s6 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s7 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s8 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s9 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s10 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s11 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s12 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s13 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s14 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s15 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a0 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a0 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s0 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s0 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c0 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c0 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a1 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a1 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s1 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s1 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c1 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c1 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a2 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b2 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a2 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b2 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s2 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s2 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a2 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c2 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c2 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a3 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b3 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a3 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b3 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c2 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c2 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s3 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s3 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a3 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c3 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c3 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a4 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b4 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a4 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b4 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c3 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c3 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s4 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s4 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a4 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c4 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c4 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a5 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b5 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a5 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b5 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c4 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c4 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s5 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s5 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a5 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c5 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c5 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a6 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b6 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a6 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b6 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c5 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c5 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s6 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s6 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a6 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c6 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c6 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a7 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b7 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a7 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b7 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c6 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c6 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s7 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s7 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a7 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c7 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c7 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a8 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b8 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a8 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b8 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c7 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c7 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s8 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s8 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a8 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c8 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c8 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a9 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b9 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a9 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b9 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c8 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c8 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s9 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s9 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a9 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c9 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c9 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a10 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b10 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a10 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b10 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c9 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c9 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s10 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s10 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a10 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c10 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c10 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a11 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b11 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a11 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b11 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c10 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c10 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s11 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s11 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a11 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c11 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c11 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a12 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b12 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a12 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b12 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c11 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c11 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s12 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s12 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a12 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c12 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c12 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a13 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b13 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a13 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b13 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c12 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c12 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s13 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s13 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a13 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c13 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c13 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a14 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b14 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a14 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b14 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c13 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c13 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s14 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s14 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a14 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c14 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c14 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a15 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b15 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a15 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b15 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c14 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c14 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s15 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s15 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a15 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b15 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: cout | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: cout | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s15 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s14 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s13 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s12 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s11 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s10 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s9 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s8 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s7 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s6 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s5 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s4 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s3 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s2 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s1 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s0 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | `-- R_BRACE: } | | |-- blockItem | | | `-- stmt | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | `-- block | | | |-- L_BRACE: { | | | |-- blockItem | | | | `-- decl | | | | `-- varDecl | | | | |-- bType | | | | | `-- Int: int | | | | |-- varDef | | | | | `-- Ident: cout | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a0 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a1 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a2 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a3 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a4 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a5 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a6 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a7 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a8 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a9 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a10 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a11 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a12 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a13 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a14 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a15 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | |-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: n | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a0 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a1 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a2 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a3 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a4 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a5 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a6 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a7 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a8 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a9 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a10 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a11 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a12 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a13 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a14 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a15 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: b0 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b1 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b2 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b3 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b4 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b5 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b6 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b7 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b8 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b9 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b10 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b11 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b12 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b13 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b14 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b15 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | |-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b0 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b1 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b1 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b2 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b3 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b3 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b4 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b4 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b5 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b5 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b6 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b6 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b7 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b7 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b8 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b8 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b9 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b9 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b10 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b10 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b11 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b11 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b12 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b12 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b13 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b13 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b14 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b14 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b15 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b15 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b15 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b15 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: c0 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c1 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c2 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c3 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c4 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c5 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c6 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c7 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c8 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c9 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c10 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c11 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c12 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c13 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c14 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: s0 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s1 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s2 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s3 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s4 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s5 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s6 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s7 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s8 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s9 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s10 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s11 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s12 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s13 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s14 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s15 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s0 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s0 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b0 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c0 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c0 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s1 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s1 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b1 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c0 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c1 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c1 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a2 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a2 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s2 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s2 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b2 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c1 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c2 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c2 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a3 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a3 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s3 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s3 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b3 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c2 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c3 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c3 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a4 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a4 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s4 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s4 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b4 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c3 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c4 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c4 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a5 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a5 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s5 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s5 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b5 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c4 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c5 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c5 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a6 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a6 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s6 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s6 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b6 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c5 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c6 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c6 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a7 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a7 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s7 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s7 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b7 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c6 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c7 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c7 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a8 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a8 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s8 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s8 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b8 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c7 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c8 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c8 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a9 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a9 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s9 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s9 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b9 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c8 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c9 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c9 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a10 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a10 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s10 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s10 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b10 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c9 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c10 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c10 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a11 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a11 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s11 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s11 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b11 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c10 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c11 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c11 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a12 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a12 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s12 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s12 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b12 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c11 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c12 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c12 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a13 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a13 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s13 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s13 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b13 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c12 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c13 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c13 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a14 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a14 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s14 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s14 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b14 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c13 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c14 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c14 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a15 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b15 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a15 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b15 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s15 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s15 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a15 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b15 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c14 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: cout | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: cout | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s15 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s14 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s13 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s12 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s11 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s10 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s9 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s8 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s7 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s6 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s5 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s4 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s3 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s2 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s1 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n1 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s0 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | `-- R_BRACE: } | | |-- blockItem | | | `-- stmt | | | `-- Semi: ; | | `-- R_BRACE: } | |-- blockItem | | `-- stmt | | `-- Semi: ; | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Int: int | | |-- varDef | | | |-- Ident: f1 | | | |-- Assign: = | | | `-- initVal | | | `-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: fib | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: n1 | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Int: int | | |-- varDef | | | `-- Ident: n2 | | `-- Semi: ; | |-- blockItem | | `-- stmt | | `-- block | | |-- L_BRACE: { | | |-- blockItem | | | `-- decl | | | `-- varDecl | | | |-- bType | | | | `-- Int: int | | | |-- varDef | | | | `-- Ident: neg_b | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | `-- block | | | |-- L_BRACE: { | | | |-- blockItem | | | | `-- decl | | | | `-- varDecl | | | | |-- bType | | | | | `-- Int: int | | | | |-- varDef | | | | | `-- Ident: not_a | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a0 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a1 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a2 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a3 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a4 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a5 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a6 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a7 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a8 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a9 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a10 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a11 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a12 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a13 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a14 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a15 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | |-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a0 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a1 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a2 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a3 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a4 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a5 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a6 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a7 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a8 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a9 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a10 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a11 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a12 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a13 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a14 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a15 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: o0 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o1 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o2 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o3 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o4 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o5 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o6 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o7 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o8 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o9 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o10 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o11 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o12 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o13 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o14 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: o15 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o0 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o1 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o2 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o3 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o4 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o5 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o6 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o7 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o8 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o9 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o10 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o11 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o12 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o13 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o14 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- NotOp: ! | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: o15 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: o15 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o15 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o14 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o13 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o12 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o11 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o10 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o9 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o8 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o7 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o6 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o5 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o4 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o3 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o2 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o1 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: not_a | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: o0 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: cout | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a0 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a1 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a2 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a3 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a4 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a5 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a6 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a7 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a8 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a9 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a10 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a11 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a12 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a13 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a14 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: a15 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | |-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | `-- initVal | | | | | | | | `-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: not_a | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a0 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a0 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a0 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a1 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a1 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a1 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a1 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a2 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a2 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a2 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a3 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a3 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a3 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a3 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a4 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a4 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a4 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a4 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a5 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a5 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a5 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a5 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a6 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a6 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a6 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a6 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a7 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a7 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a7 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a7 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a8 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a8 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a8 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a8 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a9 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a9 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a9 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a9 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a10 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a10 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a10 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a10 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a11 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a11 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a11 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a11 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a12 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a12 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a12 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a12 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a13 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a13 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a13 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a13 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a14 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a14 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a14 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a14 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a15 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a15 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a15 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a15 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: b0 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b1 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b2 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b3 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b4 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b5 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b6 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b7 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b8 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b9 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b10 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b11 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b12 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b13 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b14 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: b15 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | |-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | `-- initVal | | | | | | | | `-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b0 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b0 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b0 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b0 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b1 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b1 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b1 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b1 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b2 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b2 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b2 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b3 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b3 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b3 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b3 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b4 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b4 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b4 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b4 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b5 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b5 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b5 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b5 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b6 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b6 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b6 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b6 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b7 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b7 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b7 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b7 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b8 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b8 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b8 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b8 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b9 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b9 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b9 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b9 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b10 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b10 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b10 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b10 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b11 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b11 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b11 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b11 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b12 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b12 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b12 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b12 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b13 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b13 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b13 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b13 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b14 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b14 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b14 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b14 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b15 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- ModOp: % | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | |-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b15 | | | | | | | | | |-- LtOp: < | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | |-- R_PAREN: ) | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: b15 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- SubOp: - | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b15 | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: temp | | | | | | | | | |-- DivOp: / | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: c0 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c1 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c2 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c3 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c4 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c5 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c6 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c7 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c8 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c9 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c10 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c11 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c12 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c13 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: c14 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: s0 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s1 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s2 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s3 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s4 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s5 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s6 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s7 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s8 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s9 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s10 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s11 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s12 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s13 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s14 | | | | | | |-- Comma: , | | | | | | |-- varDef | | | | | | | `-- Ident: s15 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a0 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a0 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s0 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s0 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c0 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c0 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a1 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a1 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s1 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s1 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c1 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c1 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a2 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b2 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a2 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b2 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s2 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s2 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a2 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c2 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c2 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a3 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b3 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a3 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b3 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c2 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c2 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s3 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s3 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a3 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c3 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c3 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a4 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b4 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a4 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b4 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c3 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c3 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s4 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s4 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a4 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c4 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c4 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a5 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b5 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a5 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b5 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c4 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c4 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s5 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s5 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a5 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c5 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c5 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a6 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b6 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a6 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b6 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c5 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c5 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s6 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s6 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a6 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c6 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c6 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a7 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b7 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a7 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b7 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c6 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c6 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s7 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s7 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a7 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c7 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c7 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a8 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b8 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a8 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b8 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c7 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c7 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s8 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s8 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a8 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c8 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c8 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a9 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b9 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a9 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b9 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c8 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c8 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s9 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s9 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a9 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c9 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c9 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a10 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b10 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a10 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b10 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c9 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c9 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s10 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s10 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a10 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c10 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c10 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a11 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b11 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a11 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b11 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c10 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c10 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s11 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s11 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a11 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c11 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c11 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a12 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b12 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a12 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b12 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c11 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c11 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s12 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s12 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a12 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c12 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c12 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a13 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b13 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a13 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b13 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c12 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c12 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s13 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s13 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a13 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c13 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c13 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a14 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b14 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a14 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b14 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c13 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c13 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s14 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s14 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a14 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: c14 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c14 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_xor_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a15 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b15 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a15 | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: b15 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_or_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | |-- lOrExp | | | | | | | | | | | `-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- OrOp: || | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c14 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: c14 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- decl | | | | | | | | `-- varDecl | | | | | | | | |-- bType | | | | | | | | | `-- Int: int | | | | | | | | |-- varDef | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | |-- unaryOp | | | | | | | | | | | `-- NotOp: ! | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- If: if | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- cond | | | | | | | | | | `-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | |-- lAndExp | | | | | | | | | | | `-- eqExp | | | | | | | | | | | `-- relExp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- lVal | | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | | |-- AndOp: && | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- R_PAREN: ) | | | | | | | | | |-- stmt | | | | | | | | | | `-- block | | | | | | | | | | |-- L_BRACE: { | | | | | | | | | | |-- blockItem | | | | | | | | | | | `-- stmt | | | | | | | | | | | |-- lVal | | | | | | | | | | | | `-- Ident: s15 | | | | | | | | | | | |-- Assign: = | | | | | | | | | | | |-- exp | | | | | | | | | | | | `-- addExp | | | | | | | | | | | | `-- mulExp | | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | | `-- number | | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | | `-- Semi: ; | | | | | | | | | | `-- R_BRACE: } | | | | | | | | | |-- Else: else | | | | | | | | | `-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s15 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | `-- R_BRACE: } | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a15 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b15 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: cout | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: cout | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s15 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s14 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s13 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s12 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s11 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s10 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s9 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s8 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s7 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s6 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s5 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s4 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s3 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s2 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s1 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | |-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | |-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: neg_b | | | | | | | | | |-- MulOp: * | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 2 | | | | | | | | |-- AddOp: + | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: s0 | | | | | | | | `-- R_PAREN: ) | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | `-- R_BRACE: } | | |-- blockItem | | | `-- stmt | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | `-- block | | | |-- L_BRACE: { | | | |-- blockItem | | | | `-- decl | | | | `-- varDecl | | | | |-- bType | | | | | `-- Int: int | | | | |-- varDef | | | | | `-- Ident: cout | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a0 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a1 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a2 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a3 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a4 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a5 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a6 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a7 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a8 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a9 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a10 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a11 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a12 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a13 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a14 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: a15 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | |-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: n | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a0 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a1 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a2 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a3 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a4 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a5 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a6 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a7 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a8 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a9 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a10 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a11 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a12 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a13 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a14 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a15 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: b0 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b1 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b2 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b3 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b4 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b5 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b6 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b7 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b8 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b9 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b10 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b11 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b12 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b13 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b14 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: b15 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | |-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | `-- initVal | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: neg_b | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b0 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b0 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b1 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b1 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b2 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b3 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b3 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b4 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b4 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b5 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b5 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b6 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b6 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b7 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b7 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b8 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b8 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b9 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b9 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b10 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b10 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b11 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b11 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b12 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b12 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b13 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b13 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b14 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b14 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b15 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- ModOp: % | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | |-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b15 | | | | | | | | |-- LtOp: < | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | |-- R_PAREN: ) | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: b15 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- SubOp: - | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b15 | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: temp | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: c0 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c1 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c2 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c3 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c4 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c5 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c6 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c7 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c8 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c9 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c10 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c11 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c12 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c13 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: c14 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: s0 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s1 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s2 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s3 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s4 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s5 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s6 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s7 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s8 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s9 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s10 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s11 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s12 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s13 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s14 | | | | | |-- Comma: , | | | | | |-- varDef | | | | | | `-- Ident: s15 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a0 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s0 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s0 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b0 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c0 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c0 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a1 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s1 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s1 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b1 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c0 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c1 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c1 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a2 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a2 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s2 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s2 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b2 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c1 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c2 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c2 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a3 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a3 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s3 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s3 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b3 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c2 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c3 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c3 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a4 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a4 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s4 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s4 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b4 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c3 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c4 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c4 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a5 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a5 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s5 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s5 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b5 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c4 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c5 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c5 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a6 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a6 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s6 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s6 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b6 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c5 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c6 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c6 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a7 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a7 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s7 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s7 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b7 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c6 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c7 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c7 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a8 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a8 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s8 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s8 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b8 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c7 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c8 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c8 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a9 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a9 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s9 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s9 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b9 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c8 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c9 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c9 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a10 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a10 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s10 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s10 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b10 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c9 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c10 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c10 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a11 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a11 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s11 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s11 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b11 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c10 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c11 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c11 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a12 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a12 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s12 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s12 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b12 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c11 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c12 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c12 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a13 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a13 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s13 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s13 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b13 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c12 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c13 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c13 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a14 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a14 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s14 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s14 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b14 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c13 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: c14 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c14 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_xor_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a15 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b15 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a15 | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: b15 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_or_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | |-- lOrExp | | | | | | | | | | `-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- OrOp: || | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_and_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: c14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- decl | | | | | | | `-- varDecl | | | | | | | |-- bType | | | | | | | | `-- Int: int | | | | | | | |-- varDef | | | | | | | | `-- Ident: a_nand_b | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | |-- unaryOp | | | | | | | | | | `-- NotOp: ! | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- If: if | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- cond | | | | | | | | | `-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | |-- lAndExp | | | | | | | | | | `-- eqExp | | | | | | | | | | `-- relExp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- lVal | | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | | `-- R_PAREN: ) | | | | | | | | | |-- AndOp: && | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- R_PAREN: ) | | | | | | | | |-- stmt | | | | | | | | | `-- block | | | | | | | | | |-- L_BRACE: { | | | | | | | | | |-- blockItem | | | | | | | | | | `-- stmt | | | | | | | | | | |-- lVal | | | | | | | | | | | `-- Ident: s15 | | | | | | | | | | |-- Assign: = | | | | | | | | | | |-- exp | | | | | | | | | | | `-- addExp | | | | | | | | | | | `-- mulExp | | | | | | | | | | | `-- unaryExp | | | | | | | | | | | `-- primaryExp | | | | | | | | | | | `-- number | | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | | `-- Semi: ; | | | | | | | | | `-- R_BRACE: } | | | | | | | | |-- Else: else | | | | | | | | `-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s15 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 0 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | `-- R_BRACE: } | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a15 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b15 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: ab_and_cin | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c14 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: cout | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: cout | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s15 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s14 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s13 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s12 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s11 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s10 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s9 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s8 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s7 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s6 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s5 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s4 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s3 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s2 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s1 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: n2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | |-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: n2 | | | | | | | | |-- MulOp: * | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 2 | | | | | | | |-- AddOp: + | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: s0 | | | | | | | `-- R_PAREN: ) | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | `-- R_BRACE: } | | |-- blockItem | | | `-- stmt | | | `-- Semi: ; | | `-- R_BRACE: } | |-- blockItem | | `-- stmt | | `-- Semi: ; | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Int: int | | |-- varDef | | | |-- Ident: f2 | | | |-- Assign: = | | | `-- initVal | | | `-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: fib | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: n2 | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Int: int | | |-- varDef | | | `-- Ident: ans | | `-- Semi: ; | |-- blockItem | | `-- stmt | | `-- block | | |-- L_BRACE: { | | |-- blockItem | | | `-- decl | | | `-- varDecl | | | |-- bType | | | | `-- Int: int | | | |-- varDef | | | | `-- Ident: cout | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | `-- block | | | |-- L_BRACE: { | | | |-- blockItem | | | | `-- decl | | | | `-- varDecl | | | | |-- bType | | | | | `-- Int: int | | | | |-- varDef | | | | | `-- Ident: a0 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a1 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a2 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a3 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a4 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a5 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a6 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a7 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a8 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a9 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a10 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a11 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a12 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a13 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a14 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: a15 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | |-- Ident: temp | | | | | | |-- Assign: = | | | | | | `-- initVal | | | | | | `-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: f1 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a0 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a0 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a0 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a0 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a1 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a1 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a2 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a3 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a3 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a3 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a3 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a4 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a4 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a4 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a4 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a5 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a5 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a5 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a5 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a6 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a6 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a6 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a6 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a7 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a7 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a7 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a7 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a8 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a8 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a8 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a8 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a9 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a9 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a9 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a9 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a10 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a10 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a10 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a10 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a11 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a11 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a11 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a11 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a12 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a12 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a12 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a12 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a13 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a13 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a13 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a13 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a14 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a14 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a14 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a14 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a15 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: a15 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: a15 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a15 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- decl | | | | `-- varDecl | | | | |-- bType | | | | | `-- Int: int | | | | |-- varDef | | | | | `-- Ident: b0 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b1 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b2 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b3 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b4 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b5 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b6 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b7 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b8 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b9 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b10 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b11 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b12 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b13 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b14 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: b15 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | |-- Ident: temp | | | | | | |-- Assign: = | | | | | | `-- initVal | | | | | | `-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: f2 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b0 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b0 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b0 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b0 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b1 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b1 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b1 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b2 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b2 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b3 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b3 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b3 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b3 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b4 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b4 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b4 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b4 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b5 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b5 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b5 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b5 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b6 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b6 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b6 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b6 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b7 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b7 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b7 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b7 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b8 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b8 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b8 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b8 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b9 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b9 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b9 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b9 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b10 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b10 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b10 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b10 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b11 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b11 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b11 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b11 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b12 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b12 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b12 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b12 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b13 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b13 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b13 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b13 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b14 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b14 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b14 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b14 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b15 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- ModOp: % | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | |-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b15 | | | | | | | |-- LtOp: < | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 0 | | | | | | |-- R_PAREN: ) | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: b15 | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | |-- unaryOp | | | | | | | | `-- SubOp: - | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: b15 | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- lVal | | | | | | | `-- Ident: temp | | | | | | |-- Assign: = | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: temp | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- decl | | | | `-- varDecl | | | | |-- bType | | | | | `-- Int: int | | | | |-- varDef | | | | | `-- Ident: c0 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: c1 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: c2 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: c3 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: c4 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: c5 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: c6 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: c7 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: c8 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: c9 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: c10 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: c11 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: c12 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: c13 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: c14 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- decl | | | | `-- varDecl | | | | |-- bType | | | | | `-- Int: int | | | | |-- varDef | | | | | `-- Ident: s0 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s1 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s2 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s3 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s4 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s5 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s6 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s7 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s8 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s9 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s10 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s11 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s12 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s13 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s14 | | | | |-- Comma: , | | | | |-- varDef | | | | | `-- Ident: s15 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b0 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a0 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b0 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s0 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s0 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a0 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b0 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c0 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c0 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b1 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a1 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b1 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c0 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c0 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s1 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s1 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a1 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b1 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c0 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c1 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c1 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b2 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a2 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b2 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c1 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c1 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s2 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s2 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a2 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b2 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c1 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c2 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c2 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b3 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a3 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b3 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c2 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c2 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s3 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s3 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a3 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b3 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c2 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c3 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c3 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b4 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a4 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b4 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c3 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c3 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s4 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s4 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a4 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b4 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c3 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c4 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c4 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b5 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a5 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b5 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c4 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c4 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s5 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s5 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a5 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b5 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c4 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c5 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c5 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b6 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a6 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b6 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c5 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c5 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s6 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s6 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a6 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b6 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c5 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c6 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c6 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b7 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a7 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b7 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c6 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c6 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s7 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s7 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a7 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b7 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c6 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c7 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c7 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b8 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a8 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b8 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c7 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c7 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s8 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s8 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a8 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b8 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c7 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c8 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c8 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b9 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a9 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b9 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c8 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c8 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s9 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s9 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a9 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b9 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c8 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c9 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c9 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b10 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a10 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b10 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c9 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c9 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s10 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s10 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a10 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b10 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c9 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c10 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c10 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b11 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a11 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b11 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c10 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c10 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s11 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s11 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a11 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b11 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c10 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c11 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c11 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b12 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a12 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b12 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c11 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c11 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s12 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s12 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a12 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b12 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c11 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c12 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c12 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b13 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a13 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b13 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c12 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c12 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s13 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s13 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a13 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b13 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c12 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c13 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c13 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b14 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a14 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b14 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c13 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c13 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s14 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s14 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a14 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b14 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c13 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: c14 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: c14 | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_xor_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a15 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b15 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a15 | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: b15 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_or_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | |-- lOrExp | | | | | | | | | `-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- OrOp: || | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c14 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_or_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_and_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: c14 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_and_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- decl | | | | | | `-- varDecl | | | | | | |-- bType | | | | | | | `-- Int: int | | | | | | |-- varDef | | | | | | | `-- Ident: a_nand_b | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | |-- unaryOp | | | | | | | | | `-- NotOp: ! | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- If: if | | | | | | | |-- L_PAREN: ( | | | | | | | |-- cond | | | | | | | | `-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | |-- lAndExp | | | | | | | | | `-- eqExp | | | | | | | | | `-- relExp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | |-- L_PAREN: ( | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- lVal | | | | | | | | | | `-- Ident: a_or_b | | | | | | | | | `-- R_PAREN: ) | | | | | | | | |-- AndOp: && | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_nand_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- R_PAREN: ) | | | | | | | |-- stmt | | | | | | | | `-- block | | | | | | | | |-- L_BRACE: { | | | | | | | | |-- blockItem | | | | | | | | | `-- stmt | | | | | | | | | |-- lVal | | | | | | | | | | `-- Ident: s15 | | | | | | | | | |-- Assign: = | | | | | | | | | |-- exp | | | | | | | | | | `-- addExp | | | | | | | | | | `-- mulExp | | | | | | | | | | `-- unaryExp | | | | | | | | | | `-- primaryExp | | | | | | | | | | `-- number | | | | | | | | | | `-- IntConst: 1 | | | | | | | | | `-- Semi: ; | | | | | | | | `-- R_BRACE: } | | | | | | | |-- Else: else | | | | | | | `-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: s15 | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 0 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | `-- R_BRACE: } | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | `-- Semi: ; | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: a_and_b | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a15 | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: b15 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: a_and_b | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- decl | | | | | `-- varDecl | | | | | |-- bType | | | | | | `-- Int: int | | | | | |-- varDef | | | | | | `-- Ident: ab_and_cin | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | `-- lAndExp | | | | | | | |-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_xor_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- AndOp: && | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: c14 | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: ab_and_cin | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- block | | | | | |-- L_BRACE: { | | | | | |-- blockItem | | | | | | `-- stmt | | | | | | |-- If: if | | | | | | |-- L_PAREN: ( | | | | | | |-- cond | | | | | | | `-- lOrExp | | | | | | | |-- lOrExp | | | | | | | | `-- lAndExp | | | | | | | | `-- eqExp | | | | | | | | `-- relExp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | |-- L_PAREN: ( | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: a_and_b | | | | | | | | `-- R_PAREN: ) | | | | | | | |-- OrOp: || | | | | | | | `-- lAndExp | | | | | | | `-- eqExp | | | | | | | `-- relExp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | |-- L_PAREN: ( | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ab_and_cin | | | | | | | `-- R_PAREN: ) | | | | | | |-- R_PAREN: ) | | | | | | |-- stmt | | | | | | | `-- block | | | | | | | |-- L_BRACE: { | | | | | | | |-- blockItem | | | | | | | | `-- stmt | | | | | | | | |-- lVal | | | | | | | | | `-- Ident: cout | | | | | | | | |-- Assign: = | | | | | | | | |-- exp | | | | | | | | | `-- addExp | | | | | | | | | `-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- number | | | | | | | | | `-- IntConst: 1 | | | | | | | | `-- Semi: ; | | | | | | | `-- R_BRACE: } | | | | | | |-- Else: else | | | | | | `-- stmt | | | | | | `-- block | | | | | | |-- L_BRACE: { | | | | | | |-- blockItem | | | | | | | `-- stmt | | | | | | | |-- lVal | | | | | | | | `-- Ident: cout | | | | | | | |-- Assign: = | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- number | | | | | | | | `-- IntConst: 0 | | | | | | | `-- Semi: ; | | | | | | `-- R_BRACE: } | | | | | `-- R_BRACE: } | | | | |-- blockItem | | | | | `-- stmt | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | `-- block | | | | |-- L_BRACE: { | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 0 | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s15 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s14 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s13 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s12 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s11 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s10 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s9 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s8 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s7 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s6 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s5 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s4 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s3 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s2 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s1 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | |-- blockItem | | | | | `-- stmt | | | | | |-- lVal | | | | | | `-- Ident: ans | | | | | |-- Assign: = | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: ans | | | | | | | |-- MulOp: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 2 | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- L_PAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: s0 | | | | | | `-- R_PAREN: ) | | | | | `-- Semi: ; | | | | `-- R_BRACE: } | | | |-- blockItem | | | | `-- stmt | | | | `-- Semi: ; | | | `-- R_BRACE: } | | |-- blockItem | | | `-- stmt | | | `-- Semi: ; | | `-- R_BRACE: } | |-- blockItem | | `-- stmt | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: ans | | `-- Semi: ; | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Int: int | |-- Ident: main | |-- L_PAREN: ( | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Int: int | | |-- varDef | | | |-- Ident: i | | | |-- 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: i | | | |-- LeOp: <= | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 20 | | |-- R_PAREN: ) | | `-- stmt | | `-- block | | |-- L_BRACE: { | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putch | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 102 | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putch | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 105 | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putch | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 98 | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putch | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 40 | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putint | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: i | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putch | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 41 | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putch | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 32 | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putch | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 61 | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putch | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 32 | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putint | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | |-- Ident: fib | | | | | |-- L_PAREN: ( | | | | | |-- funcRParams | | | | | | `-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: i | | | | | `-- R_PAREN: ) | | | | `-- 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: i | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: i | | | | |-- 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: } `-- EOF: