diff --git a/output/lab1/01_mm2.tree b/output/lab1/01_mm2.tree new file mode 100644 index 0000000..5414b89 --- /dev/null +++ b/output/lab1/01_mm2.tree @@ -0,0 +1,1472 @@ +compUnit +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- INT: int +| |-- constDef +| | |-- Ident: N +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 1024 +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: mm +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: n +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | |-- Ident: A +| | | |-- LBRACK: [ +| | | |-- RBRACK: ] +| | | |-- LBRACK: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: N +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | |-- Ident: B +| | | |-- LBRACK: [ +| | | |-- RBRACK: ] +| | | |-- LBRACK: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: N +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | |-- Ident: C +| | |-- LBRACK: [ +| | |-- RBRACK: ] +| | |-- LBRACK: [ +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | `-- RBRACK: ] +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | `-- Ident: i +| | |-- COMMA: , +| | |-- varDef +| | | `-- Ident: j +| | |-- COMMA: , +| | |-- varDef +| | | `-- Ident: k +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: j +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: C +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: j +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: k +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: k +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- IF: if +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | |-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: A +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: k +| | | | | | `-- RBRACK: ] +| | | | | |-- EQ: == +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- RPAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- CONTINUE: continue +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- WHILE: while +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | `-- relExp +| | | | | |-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- LT: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: n +| | | | |-- RPAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: C +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: C +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- RBRACK: ] +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | `-- RBRACK: ] +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: A +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- RBRACK: ] +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: k +| | | | | | | `-- RBRACK: ] +| | | | | | |-- MUL: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: B +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: k +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: i +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: k +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: k +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: A +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | |-- RBRACK: ] +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: B +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | |-- RBRACK: ] +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: C +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | |-- RBRACK: ] +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: n +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | `-- Ident: i +| | |-- COMMA: , +| | |-- varDef +| | | `-- Ident: j +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: j +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: A +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getint +| | | | | |-- LPAREN: ( +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: j +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: B +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getint +| | | | | |-- LPAREN: ( +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 5 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: mm +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: A +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: B +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: C +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: mm +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: A +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: C +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: B +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: ans +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: ans +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: ans +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: B +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putint +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: ans +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 10 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/02_mv3.tree b/output/lab1/02_mv3.tree new file mode 100644 index 0000000..14150bc --- /dev/null +++ b/output/lab1/02_mv3.tree @@ -0,0 +1,1055 @@ +compUnit +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | `-- Ident: x +| `-- SEMI: ; +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- INT: int +| |-- constDef +| | |-- Ident: N +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 2010 +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: mv +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: n +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | |-- Ident: A +| | | |-- LBRACK: [ +| | | |-- RBRACK: ] +| | | |-- LBRACK: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: N +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | |-- Ident: b +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | |-- Ident: res +| | |-- LBRACK: [ +| | `-- RBRACK: ] +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | `-- Ident: x +| | |-- COMMA: , +| | |-- varDef +| | | `-- Ident: y +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: y +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: x +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 11 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | `-- Ident: i +| | |-- COMMA: , +| | |-- varDef +| | | `-- Ident: j +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: res +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: j +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- IF: if +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | |-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: A +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | |-- EQ: == +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- RPAREN: ) +| | | | |-- stmt +| | | | | `-- block +| | | | | |-- LBRACE: { +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: x +| | | | | | |-- ASSIGN: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | |-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: x +| | | | | | | | |-- MUL: * +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | |-- Ident: b +| | | | | | | | |-- LBRACK: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: i +| | | | | | | | `-- RBRACK: ] +| | | | | | | |-- ADD: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: b +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | `-- RBRACK: ] +| | | | | | `-- SEMI: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: y +| | | | | | |-- ASSIGN: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: y +| | | | | | | |-- SUB: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: x +| | | | | | `-- SEMI: ; +| | | | | `-- RBRACE: } +| | | | |-- ELSE: else +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: res +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: res +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- RBRACK: ] +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: A +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- RBRACK: ] +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | `-- RBRACK: ] +| | | | | | |-- MUL: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: b +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: A +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | |-- RBRACK: ] +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: B +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: C +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: n +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | `-- Ident: i +| | |-- COMMA: , +| | |-- varDef +| | | `-- Ident: j +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: A +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getint +| | | | | |-- LPAREN: ( +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: B +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: getint +| | | | |-- LPAREN: ( +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 50 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: mv +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: A +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: B +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: C +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: mv +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: A +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: C +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: B +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putarray +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: n +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: C +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/03_sort1.tree b/output/lab1/03_sort1.tree new file mode 100644 index 0000000..9629e62 --- /dev/null +++ b/output/lab1/03_sort1.tree @@ -0,0 +1,1935 @@ +compUnit +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- INT: int +| |-- constDef +| | |-- Ident: base +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 16 +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: getMaxNum +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: n +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | |-- Ident: arr +| | |-- LBRACK: [ +| | `-- RBRACK: ] +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: ret +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- IF: if +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: arr +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | |-- GT: > +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: ret +| | | |-- RPAREN: ) +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: ret +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: arr +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: ret +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: getNumPos +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: num +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: pos +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: tmp +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: pos +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: num +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: num +| | | | |-- DIV: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: base +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: num +| | | |-- MOD: % +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: base +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: radixSort +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: bitround +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | |-- Ident: a +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: l +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: r +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: head +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: base +| | | |-- RBRACK: ] +| | | |-- ASSIGN: = +| | | `-- initVal +| | | |-- LBRACE: { +| | | `-- RBRACE: } +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: tail +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: base +| | | |-- RBRACK: ] +| | | |-- ASSIGN: = +| | | `-- initVal +| | | |-- LBRACE: { +| | | `-- RBRACE: } +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: cnt +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: base +| | | |-- RBRACK: ] +| | | |-- ASSIGN: = +| | | `-- initVal +| | | |-- LBRACE: { +| | | `-- RBRACE: } +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | |-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | |-- eqExp +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: bitround +| | | | |-- EQ: == +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- unaryOp +| | | | | `-- SUB: - +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- OR: || +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: l +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- GE: >= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: r +| | |-- RPAREN: ) +| | `-- stmt +| | |-- RETURN: return +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- INT: int +| | | |-- varDef +| | | | |-- Ident: i +| | | | |-- ASSIGN: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: l +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: r +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: cnt +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | |-- Ident: getNumPos +| | | | | | |-- LPAREN: ( +| | | | | | |-- funcRParams +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | |-- Ident: a +| | | | | | | | |-- LBRACK: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: i +| | | | | | | | `-- RBRACK: ] +| | | | | | | |-- COMMA: , +| | | | | | | `-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: bitround +| | | | | | `-- RPAREN: ) +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: cnt +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | |-- Ident: getNumPos +| | | | | | | |-- LPAREN: ( +| | | | | | | |-- funcRParams +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | |-- Ident: a +| | | | | | | | | |-- LBRACK: [ +| | | | | | | | | |-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: i +| | | | | | | | | `-- RBRACK: ] +| | | | | | | | |-- COMMA: , +| | | | | | | | `-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: bitround +| | | | | | | `-- RPAREN: ) +| | | | | | `-- RBRACK: ] +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: i +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: head +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: l +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: tail +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: l +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: cnt +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- RBRACK: ] +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: base +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: head +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: tail +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- SUB: - +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- RBRACK: ] +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: tail +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: head +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: cnt +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: i +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: base +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- WHILE: while +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | `-- relExp +| | | | | |-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: head +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | |-- LT: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: tail +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | |-- RPAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- decl +| | | | | `-- varDecl +| | | | | |-- bType +| | | | | | `-- INT: int +| | | | | |-- varDef +| | | | | | |-- Ident: v +| | | | | | |-- ASSIGN: = +| | | | | | `-- initVal +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: a +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: head +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- RBRACK: ] +| | | | | | `-- RBRACK: ] +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- WHILE: while +| | | | | |-- LPAREN: ( +| | | | | |-- cond +| | | | | | `-- lOrExp +| | | | | | `-- lAndExp +| | | | | | `-- eqExp +| | | | | | |-- eqExp +| | | | | | | `-- relExp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | |-- Ident: getNumPos +| | | | | | | |-- LPAREN: ( +| | | | | | | |-- funcRParams +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: v +| | | | | | | | |-- COMMA: , +| | | | | | | | `-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: bitround +| | | | | | | `-- RPAREN: ) +| | | | | | |-- NE: != +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- RPAREN: ) +| | | | | `-- stmt +| | | | | `-- block +| | | | | |-- LBRACE: { +| | | | | |-- blockItem +| | | | | | `-- decl +| | | | | | `-- varDecl +| | | | | | |-- bType +| | | | | | | `-- INT: int +| | | | | | |-- varDef +| | | | | | | |-- Ident: t +| | | | | | | |-- ASSIGN: = +| | | | | | | `-- initVal +| | | | | | | `-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: v +| | | | | | `-- SEMI: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: v +| | | | | | |-- ASSIGN: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: a +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | |-- Ident: head +| | | | | | | | |-- LBRACK: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | |-- Ident: getNumPos +| | | | | | | | | |-- LPAREN: ( +| | | | | | | | | |-- funcRParams +| | | | | | | | | | |-- exp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- lVal +| | | | | | | | | | | `-- Ident: t +| | | | | | | | | | |-- COMMA: , +| | | | | | | | | | `-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: bitround +| | | | | | | | | `-- RPAREN: ) +| | | | | | | | `-- RBRACK: ] +| | | | | | | `-- RBRACK: ] +| | | | | | `-- SEMI: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | |-- Ident: a +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | |-- Ident: head +| | | | | | | | |-- LBRACK: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | |-- Ident: getNumPos +| | | | | | | | | |-- LPAREN: ( +| | | | | | | | | |-- funcRParams +| | | | | | | | | | |-- exp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- lVal +| | | | | | | | | | | `-- Ident: t +| | | | | | | | | | |-- COMMA: , +| | | | | | | | | | `-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: bitround +| | | | | | | | | `-- RPAREN: ) +| | | | | | | | `-- RBRACK: ] +| | | | | | | `-- RBRACK: ] +| | | | | | |-- ASSIGN: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: t +| | | | | | `-- SEMI: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | |-- Ident: head +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | |-- Ident: getNumPos +| | | | | | | | |-- LPAREN: ( +| | | | | | | | |-- funcRParams +| | | | | | | | | |-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: t +| | | | | | | | | |-- COMMA: , +| | | | | | | | | `-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: bitround +| | | | | | | | `-- RPAREN: ) +| | | | | | | `-- RBRACK: ] +| | | | | | |-- ASSIGN: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | |-- Ident: head +| | | | | | | | |-- LBRACK: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | |-- Ident: getNumPos +| | | | | | | | | |-- LPAREN: ( +| | | | | | | | | |-- funcRParams +| | | | | | | | | | |-- exp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- lVal +| | | | | | | | | | | `-- Ident: t +| | | | | | | | | | |-- COMMA: , +| | | | | | | | | | `-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: bitround +| | | | | | | | | `-- RPAREN: ) +| | | | | | | | `-- RBRACK: ] +| | | | | | | |-- ADD: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- SEMI: ; +| | | | | `-- RBRACE: } +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: a +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: head +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- RBRACK: ] +| | | | | | `-- RBRACK: ] +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: v +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: head +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: head +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- RBRACK: ] +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: i +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- INT: int +| | | |-- varDef +| | | | |-- Ident: i +| | | | |-- ASSIGN: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: l +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: head +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: l +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: tail +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: l +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: cnt +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- RBRACK: ] +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: base +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- IF: if +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | `-- relExp +| | | | | |-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- GT: > +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- RPAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: head +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: tail +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- SUB: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- RBRACK: ] +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: tail +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: head +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- RBRACK: ] +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: cnt +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: radixSort +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: bitround +| | | | | | | |-- SUB: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | |-- COMMA: , +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: a +| | | | | | |-- COMMA: , +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: head +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- RBRACK: ] +| | | | | | |-- COMMA: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: tail +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: i +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | `-- SEMI: ; +| `-- RBRACE: } +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: a +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 30000010 +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | `-- Ident: ans +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: n +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getarray +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: radixSort +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 8 +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: ans +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: ans +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- MUL: * +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | |-- LPAREN: ( +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: a +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | |-- MOD: % +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | |-- LPAREN: ( +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 2 +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RPAREN: ) +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: ans +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- RPAREN: ) +| | `-- stmt +| | |-- lVal +| | | `-- Ident: ans +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SUB: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: ans +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putint +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: ans +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 10 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/05_arr_defn4.tree b/output/lab1/05_arr_defn4.tree new file mode 100644 index 0000000..c431890 --- /dev/null +++ b/output/lab1/05_arr_defn4.tree @@ -0,0 +1,651 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- constDecl +| | |-- CONST: const +| | |-- bType +| | | `-- INT: int +| | |-- constDef +| | | |-- Ident: a +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 4 +| | | |-- RBRACK: ] +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- RBRACK: ] +| | | |-- ASSIGN: = +| | | `-- constInitVal +| | | |-- LBRACE: { +| | | |-- constInitVal +| | | | |-- LBRACE: { +| | | | |-- constInitVal +| | | | | `-- constExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- COMMA: , +| | | | |-- constInitVal +| | | | | `-- constExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | `-- RBRACE: } +| | | |-- COMMA: , +| | | |-- constInitVal +| | | | |-- LBRACE: { +| | | | |-- constInitVal +| | | | | `-- constExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 3 +| | | | |-- COMMA: , +| | | | |-- constInitVal +| | | | | `-- constExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 4 +| | | | `-- RBRACE: } +| | | |-- COMMA: , +| | | |-- constInitVal +| | | | |-- LBRACE: { +| | | | `-- RBRACE: } +| | | |-- COMMA: , +| | | |-- constInitVal +| | | | `-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 7 +| | | `-- RBRACE: } +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- constDecl +| | |-- CONST: const +| | |-- bType +| | | `-- INT: int +| | |-- constDef +| | | |-- Ident: N +| | | |-- ASSIGN: = +| | | `-- constInitVal +| | | `-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 3 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: b +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 4 +| | | |-- RBRACK: ] +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- RBRACK: ] +| | | |-- ASSIGN: = +| | | `-- initVal +| | | |-- LBRACE: { +| | | `-- RBRACE: } +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: c +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 4 +| | | |-- RBRACK: ] +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- RBRACK: ] +| | | |-- ASSIGN: = +| | | `-- initVal +| | | |-- LBRACE: { +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- COMMA: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- COMMA: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 3 +| | | |-- COMMA: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 4 +| | | |-- COMMA: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 5 +| | | |-- COMMA: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 6 +| | | |-- COMMA: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 7 +| | | |-- COMMA: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 8 +| | | `-- RBRACE: } +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: d +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: N +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- RBRACK: ] +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- RBRACK: ] +| | | |-- ASSIGN: = +| | | `-- initVal +| | | |-- LBRACE: { +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- COMMA: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- COMMA: , +| | | |-- initVal +| | | | |-- LBRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 3 +| | | | `-- RBRACE: } +| | | |-- COMMA: , +| | | |-- initVal +| | | | |-- LBRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 5 +| | | | `-- RBRACE: } +| | | |-- COMMA: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: a +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 3 +| | | | |-- RBRACK: ] +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- RBRACK: ] +| | | |-- COMMA: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 8 +| | | `-- RBRACE: } +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: e +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 4 +| | | |-- RBRACK: ] +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- RBRACK: ] +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- RBRACK: ] +| | | |-- ASSIGN: = +| | | `-- initVal +| | | |-- LBRACE: { +| | | |-- initVal +| | | | |-- LBRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: d +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- RBRACK: ] +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | |-- LBRACE: { +| | | | | |-- initVal +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: c +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 2 +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- RBRACK: ] +| | | | | `-- RBRACE: } +| | | | `-- RBRACE: } +| | | |-- COMMA: , +| | | |-- initVal +| | | | |-- LBRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 3 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 4 +| | | | `-- RBRACE: } +| | | |-- COMMA: , +| | | |-- initVal +| | | | |-- LBRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 5 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 6 +| | | | `-- RBRACE: } +| | | |-- COMMA: , +| | | |-- initVal +| | | | |-- LBRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 7 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 8 +| | | | `-- RBRACE: } +| | | `-- RBRACE: } +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | |-- addExp +| | | | |-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: e +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 3 +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 0 +| | | | | | `-- RBRACK: ] +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: e +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 0 +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 0 +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 0 +| | | | | `-- RBRACK: ] +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: e +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- RBRACK: ] +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- RBRACK: ] +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- RBRACK: ] +| | | |-- ADD: + +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | |-- Ident: d +| | | |-- LBRACK: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 3 +| | | |-- RBRACK: ] +| | | |-- LBRACK: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- RBRACK: ] +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/09_func_defn.tree b/output/lab1/09_func_defn.tree new file mode 100644 index 0000000..68ac5cf --- /dev/null +++ b/output/lab1/09_func_defn.tree @@ -0,0 +1,116 @@ +compUnit +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | `-- Ident: a +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: func +| |-- LPAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: p +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: p +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | |-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: p +| | | |-- SUB: - +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: p +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | `-- Ident: b +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: a +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 10 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: b +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: func +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: b +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/11_add2.tree b/output/lab1/11_add2.tree new file mode 100644 index 0000000..a2deb3d --- /dev/null +++ b/output/lab1/11_add2.tree @@ -0,0 +1,69 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | `-- Ident: a +| | |-- COMMA: , +| | |-- varDef +| | | `-- Ident: b +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: a +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 10 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: b +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SUB: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | |-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | |-- ADD: + +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: b +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/13_sub2.tree b/output/lab1/13_sub2.tree new file mode 100644 index 0000000..abbb293 --- /dev/null +++ b/output/lab1/13_sub2.tree @@ -0,0 +1,67 @@ +compUnit +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- INT: int +| |-- constDef +| | |-- Ident: a +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 10 +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | `-- Ident: b +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: b +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 2 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | |-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: b +| | | |-- SUB: - +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: a +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/15_graph_coloring.tree b/output/lab1/15_graph_coloring.tree new file mode 100644 index 0000000..9af8862 --- /dev/null +++ b/output/lab1/15_graph_coloring.tree @@ -0,0 +1,1337 @@ +compUnit +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- INT: int +| |-- constDef +| | |-- Ident: V +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 4 +| `-- SEMI: ; +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- INT: int +| |-- constDef +| | |-- Ident: space +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 32 +| `-- SEMI: ; +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- INT: int +| |-- constDef +| | |-- Ident: LF +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 10 +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: printSolution +| |-- LPAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | |-- Ident: color +| | |-- LBRACK: [ +| | `-- RBRACK: ] +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: V +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putint +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: color +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putch +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: space +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: LF +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: printMessage +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 78 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 111 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 116 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: space +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 101 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 120 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 105 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 115 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 116 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: isSafe +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | |-- Ident: graph +| | | |-- LBRACK: [ +| | | |-- RBRACK: ] +| | | |-- LBRACK: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: V +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | |-- Ident: color +| | |-- LBRACK: [ +| | `-- RBRACK: ] +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: V +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- INT: int +| | | |-- varDef +| | | | |-- Ident: j +| | | | |-- ASSIGN: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: V +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- IF: if +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | |-- lAndExp +| | | | | | `-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: graph +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | |-- AND: && +| | | | | `-- eqExp +| | | | | |-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: color +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | |-- EQ: == +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: color +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | |-- RPAREN: ) +| | | | `-- stmt +| | | | |-- RETURN: return +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: graphColoring +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | |-- Ident: graph +| | | |-- LBRACK: [ +| | | |-- RBRACK: ] +| | | |-- LBRACK: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: V +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: m +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: i +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | |-- Ident: color +| | |-- LBRACK: [ +| | `-- RBRACK: ] +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- EQ: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: V +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- IF: if +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: isSafe +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: graph +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: color +| | | | `-- RPAREN: ) +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: printSolution +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: color +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- RETURN: return +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- RETURN: return +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: j +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: j +| | | |-- LE: <= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: m +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: color +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: j +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- IF: if +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: graphColoring +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: graph +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: m +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: color +| | | | `-- RPAREN: ) +| | | |-- RPAREN: ) +| | | `-- stmt +| | | |-- RETURN: return +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: color +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: graph +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: V +| | | |-- RBRACK: ] +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: V +| | | |-- RBRACK: ] +| | | |-- ASSIGN: = +| | | `-- initVal +| | | |-- LBRACE: { +| | | |-- initVal +| | | | |-- LBRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- RBRACE: } +| | | |-- COMMA: , +| | | |-- initVal +| | | | |-- LBRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- RBRACE: } +| | | |-- COMMA: , +| | | |-- initVal +| | | | |-- LBRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- RBRACE: } +| | | |-- COMMA: , +| | | |-- initVal +| | | | |-- LBRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- COMMA: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- RBRACE: } +| | | `-- RBRACE: } +| | |-- COMMA: , +| | |-- varDef +| | | |-- Ident: m +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 3 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: color +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: V +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: V +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: color +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- NOT: ! +| | | `-- unaryExp +| | | |-- Ident: graphColoring +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: graph +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: m +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: color +| | | `-- RPAREN: ) +| | |-- RPAREN: ) +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: printMessage +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/2025-MYO-20.tree b/output/lab1/2025-MYO-20.tree new file mode 100644 index 0000000..baae46d --- /dev/null +++ b/output/lab1/2025-MYO-20.tree @@ -0,0 +1,1843 @@ +compUnit +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: A +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1024 +| | |-- RBRACK: ] +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1024 +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: B +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1024 +| | |-- RBRACK: ] +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1024 +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: C +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1024 +| | |-- RBRACK: ] +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1024 +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: T +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: R +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: T +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- IF: if +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- DIV: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getarray +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: A +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: T +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- IF: if +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- GE: >= +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- DIV: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getarray +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: B +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: T +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- IF: if +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- GE: >= +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- DIV: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- INT: int +| | | | |-- varDef +| | | | | |-- Ident: j +| | | | | |-- ASSIGN: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- WHILE: while +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | `-- relExp +| | | | | |-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- LT: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- RPAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: A +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | |-- unaryOp +| | | | | | | `-- SUB: - +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: T +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- IF: if +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- DIV: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- INT: int +| | | | |-- varDef +| | | | | |-- Ident: j +| | | | | |-- ASSIGN: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- WHILE: while +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | `-- relExp +| | | | | |-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- LT: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- RPAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: B +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | |-- unaryOp +| | | | | | | `-- SUB: - +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: T +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- INT: int +| | | |-- varDef +| | | | |-- Ident: j +| | | | |-- ASSIGN: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: T +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: C +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: A +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- RBRACK: ] +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | `-- RBRACK: ] +| | | | | | |-- MUL: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: B +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | |-- MUL: * +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 3 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: T +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- INT: int +| | | |-- varDef +| | | | |-- Ident: j +| | | | |-- ASSIGN: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: T +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- INT: int +| | | | |-- varDef +| | | | | |-- Ident: val +| | | | | |-- ASSIGN: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: C +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: val +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: val +| | | | | | |-- MUL: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: val +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 7 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: val +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: val +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 3 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: C +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: val +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: T +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- INT: int +| | | |-- varDef +| | | | |-- Ident: j +| | | | |-- ASSIGN: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: T +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- INT: int +| | | | |-- varDef +| | | | | |-- Ident: k +| | | | | |-- ASSIGN: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- INT: int +| | | | |-- varDef +| | | | | |-- Ident: sum +| | | | | |-- ASSIGN: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- WHILE: while +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | `-- relExp +| | | | | |-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: k +| | | | | |-- LT: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- RPAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: sum +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: sum +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: C +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- RBRACK: ] +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: k +| | | | | | | `-- RBRACK: ] +| | | | | | |-- MUL: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: A +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: k +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: k +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: k +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: A +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: sum +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: total +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: r +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: r +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: R +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: T +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- INT: int +| | | | |-- varDef +| | | | | |-- Ident: j +| | | | | |-- ASSIGN: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- WHILE: while +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | `-- relExp +| | | | | |-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- LT: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- RPAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: total +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: total +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: A +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- RBRACK: ] +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | `-- RBRACK: ] +| | | | | | |-- MUL: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: A +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: i +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: r +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: r +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putint +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: total +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 10 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/22_matrix_multiply.tree b/output/lab1/22_matrix_multiply.tree new file mode 100644 index 0000000..318d8b3 --- /dev/null +++ b/output/lab1/22_matrix_multiply.tree @@ -0,0 +1,1001 @@ +compUnit +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- INT: int +| |-- constDef +| | |-- Ident: MAX_SIZE +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 100 +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: a +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: MAX_SIZE +| | |-- RBRACK: ] +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: MAX_SIZE +| | `-- RBRACK: ] +| |-- COMMA: , +| |-- varDef +| | |-- Ident: b +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: MAX_SIZE +| | |-- RBRACK: ] +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: MAX_SIZE +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: res +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: MAX_SIZE +| | |-- RBRACK: ] +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: MAX_SIZE +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | `-- Ident: n1 +| |-- COMMA: , +| |-- varDef +| | `-- Ident: m1 +| |-- COMMA: , +| |-- varDef +| | `-- Ident: n2 +| |-- COMMA: , +| |-- varDef +| | `-- Ident: m2 +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: matrix_multiply +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: m1 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- INT: int +| | | |-- varDef +| | | | |-- Ident: j +| | | | |-- ASSIGN: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n2 +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- INT: int +| | | | |-- varDef +| | | | | |-- Ident: k +| | | | | |-- ASSIGN: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- WHILE: while +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | `-- relExp +| | | | | |-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: k +| | | | | |-- LT: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: n1 +| | | | |-- RPAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: res +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: res +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- RBRACK: ] +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | `-- RBRACK: ] +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: a +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- RBRACK: ] +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: k +| | | | | | | `-- RBRACK: ] +| | | | | | |-- MUL: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: b +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: k +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: k +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: k +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | `-- Ident: i +| | |-- COMMA: , +| | |-- varDef +| | | `-- Ident: j +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: m1 +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: n1 +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: m1 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n1 +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: a +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getint +| | | | | |-- LPAREN: ( +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: m2 +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: n2 +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: m2 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n2 +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: b +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getint +| | | | | |-- LPAREN: ( +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: matrix_multiply +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: m1 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n2 +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: putint +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: res +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: putch +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 32 +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putch +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 10 +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/25_scope3.tree b/output/lab1/25_scope3.tree new file mode 100644 index 0000000..9a19b14 --- /dev/null +++ b/output/lab1/25_scope3.tree @@ -0,0 +1,699 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 97 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 10 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: a +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | |-- COMMA: , +| | |-- varDef +| | | |-- Ident: putch +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: a +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- INT: int +| | | |-- varDef +| | | | |-- Ident: b +| | | | |-- ASSIGN: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 3 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: b +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 4 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: putch +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: putch +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: b +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: b +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: b +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 5 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- INT: int +| | | | |-- varDef +| | | | | |-- Ident: main +| | | | | |-- ASSIGN: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: b +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 6 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: a +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: a +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: main +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: putch +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | |-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: putch +| | | | | | | |-- ADD: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: a +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: b +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: main +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: b +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: b +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: a +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- decl +| | | | | `-- varDecl +| | | | | |-- bType +| | | | | | `-- INT: int +| | | | | |-- varDef +| | | | | | |-- Ident: a +| | | | | | |-- ASSIGN: = +| | | | | | `-- initVal +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: main +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 7 +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: a +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: a +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 8 +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: putch +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | |-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: putch +| | | | | | | | |-- ADD: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: a +| | | | | | | |-- ADD: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: b +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: main +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | `-- block +| | | | | |-- LBRACE: { +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: b +| | | | | | |-- ASSIGN: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: b +| | | | | | | |-- ADD: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: a +| | | | | | `-- SEMI: ; +| | | | | |-- blockItem +| | | | | | `-- decl +| | | | | | `-- varDecl +| | | | | | |-- bType +| | | | | | | `-- INT: int +| | | | | | |-- varDef +| | | | | | | |-- Ident: b +| | | | | | | |-- ASSIGN: = +| | | | | | | `-- initVal +| | | | | | | `-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: main +| | | | | | | |-- ADD: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 9 +| | | | | | `-- SEMI: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: a +| | | | | | |-- ASSIGN: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: a +| | | | | | | |-- ADD: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 10 +| | | | | | `-- SEMI: ; +| | | | | |-- blockItem +| | | | | | `-- decl +| | | | | | `-- constDecl +| | | | | | |-- CONST: const +| | | | | | |-- bType +| | | | | | | `-- INT: int +| | | | | | |-- constDef +| | | | | | | |-- Ident: a +| | | | | | | |-- ASSIGN: = +| | | | | | | `-- constInitVal +| | | | | | | `-- constExp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 11 +| | | | | | `-- SEMI: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: b +| | | | | | |-- ASSIGN: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: b +| | | | | | | |-- ADD: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 12 +| | | | | | `-- SEMI: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: putch +| | | | | | |-- ASSIGN: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | |-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: putch +| | | | | | | | | |-- ADD: + +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: a +| | | | | | | | |-- ADD: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: b +| | | | | | | |-- ADD: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: main +| | | | | | `-- SEMI: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | `-- block +| | | | | | |-- LBRACE: { +| | | | | | |-- blockItem +| | | | | | | `-- stmt +| | | | | | | |-- lVal +| | | | | | | | `-- Ident: main +| | | | | | | |-- ASSIGN: = +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: main +| | | | | | | | |-- ADD: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: b +| | | | | | | `-- SEMI: ; +| | | | | | |-- blockItem +| | | | | | | `-- decl +| | | | | | | `-- varDecl +| | | | | | | |-- bType +| | | | | | | | `-- INT: int +| | | | | | | |-- varDef +| | | | | | | | |-- Ident: main +| | | | | | | | |-- ASSIGN: = +| | | | | | | | `-- initVal +| | | | | | | | `-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: b +| | | | | | | | |-- ADD: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 13 +| | | | | | | `-- SEMI: ; +| | | | | | |-- blockItem +| | | | | | | `-- stmt +| | | | | | | |-- lVal +| | | | | | | | `-- Ident: main +| | | | | | | |-- ASSIGN: = +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: main +| | | | | | | | |-- ADD: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: a +| | | | | | | `-- SEMI: ; +| | | | | | |-- blockItem +| | | | | | | `-- stmt +| | | | | | | |-- lVal +| | | | | | | | `-- Ident: putch +| | | | | | | |-- ASSIGN: = +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | |-- addExp +| | | | | | | | | | |-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- lVal +| | | | | | | | | | | `-- Ident: putch +| | | | | | | | | | |-- ADD: + +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: a +| | | | | | | | | |-- ADD: + +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: b +| | | | | | | | |-- ADD: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: main +| | | | | | | `-- SEMI: ; +| | | | | | `-- RBRACE: } +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: putch +| | | | | | |-- ASSIGN: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: putch +| | | | | | | |-- SUB: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: main +| | | | | | `-- SEMI: ; +| | | | | `-- RBRACE: } +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: putch +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: putch +| | | | | | |-- SUB: - +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: b +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: putch +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: putch +| | | | | |-- SUB: - +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: putch +| | | |-- MOD: % +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 77 +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/29_break.tree b/output/lab1/29_break.tree new file mode 100644 index 0000000..bedb8d9 --- /dev/null +++ b/output/lab1/29_break.tree @@ -0,0 +1,165 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | `-- Ident: i +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | `-- Ident: sum +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: sum +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 100 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- IF: if +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | |-- eqExp +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- EQ: == +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 50 +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- BREAK: break +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: sum +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: sum +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: sum +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/36_op_priority2.tree b/output/lab1/36_op_priority2.tree new file mode 100644 index 0000000..71ef8ba --- /dev/null +++ b/output/lab1/36_op_priority2.tree @@ -0,0 +1,125 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | `-- Ident: a +| | |-- COMMA: , +| | |-- varDef +| | | `-- Ident: b +| | |-- COMMA: , +| | |-- varDef +| | | `-- Ident: c +| | |-- COMMA: , +| | |-- varDef +| | | `-- Ident: d +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: a +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 10 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: b +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 4 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: c +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 2 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: d +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 2 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | |-- LPAREN: ( +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: c +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | `-- RPAREN: ) +| | | |-- MUL: * +| | | `-- unaryExp +| | | `-- primaryExp +| | | |-- LPAREN: ( +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | |-- SUB: - +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: d +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/95_float.tree b/output/lab1/95_float.tree new file mode 100644 index 0000000..a8384c0 --- /dev/null +++ b/output/lab1/95_float.tree @@ -0,0 +1,1493 @@ +compUnit +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- FLOAT: float +| |-- constDef +| | |-- Ident: RADIUS +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 5.5 +| |-- COMMA: , +| |-- constDef +| | |-- Ident: PI +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 03.141592653589793 +| |-- COMMA: , +| |-- constDef +| | |-- Ident: EPS +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 1e-6 +| `-- SEMI: ; +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- FLOAT: float +| |-- constDef +| | |-- Ident: PI_HEX +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 0x1.921fb6p+1 +| |-- COMMA: , +| |-- constDef +| | |-- Ident: HEX2 +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 0x.AP-3 +| `-- SEMI: ; +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- FLOAT: float +| |-- constDef +| | |-- Ident: FACT +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | |-- unaryOp +| | | `-- SUB: - +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: .33E+5 +| |-- COMMA: , +| |-- constDef +| | |-- Ident: EVAL1 +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | |-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: PI +| | | |-- MUL: * +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: RADIUS +| | |-- MUL: * +| | `-- unaryExp +| | `-- primaryExp +| | `-- lVal +| | `-- Ident: RADIUS +| |-- COMMA: , +| |-- constDef +| | |-- Ident: EVAL2 +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | |-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- MUL: * +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: PI_HEX +| | |-- MUL: * +| | `-- unaryExp +| | `-- primaryExp +| | `-- lVal +| | `-- Ident: RADIUS +| |-- COMMA: , +| |-- constDef +| | |-- Ident: EVAL3 +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | |-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: PI +| | | |-- MUL: * +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 2 +| | |-- MUL: * +| | `-- unaryExp +| | `-- primaryExp +| | `-- lVal +| | `-- Ident: RADIUS +| `-- SEMI: ; +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- FLOAT: float +| |-- constDef +| | |-- Ident: CONV1 +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 233 +| |-- COMMA: , +| |-- constDef +| | |-- Ident: CONV2 +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 0xfff +| `-- SEMI: ; +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- INT: int +| |-- constDef +| | |-- Ident: MAX +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 1e9 +| |-- COMMA: , +| |-- constDef +| | |-- Ident: TWO +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 2.9 +| |-- COMMA: , +| |-- constDef +| | |-- Ident: THREE +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 3.2 +| |-- COMMA: , +| |-- constDef +| | |-- Ident: FIVE +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | |-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: TWO +| | |-- ADD: + +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- lVal +| | `-- Ident: THREE +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- FLOAT: float +| |-- Ident: float_abs +| |-- LPAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- FLOAT: float +| | `-- Ident: x +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: x +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- RPAREN: ) +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SUB: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: x +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: x +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- FLOAT: float +| |-- Ident: circle_area +| |-- LPAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: radius +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | |-- LPAREN: ( +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: PI +| | | | | | | |-- MUL: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: radius +| | | | | | |-- MUL: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: radius +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | |-- LPAREN: ( +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: radius +| | | | | | | |-- MUL: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: radius +| | | | | | `-- RPAREN: ) +| | | | | |-- MUL: * +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: PI +| | | | `-- RPAREN: ) +| | | |-- DIV: / +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 2 +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: float_eq +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | `-- Ident: a +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- FLOAT: float +| | `-- Ident: b +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: float_abs +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: a +| | | | | |-- SUB: - +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | `-- RPAREN: ) +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: EPS +| | |-- RPAREN: ) +| | |-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- RETURN: return +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | |-- MUL: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- FloatConst: 2. +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- ELSE: else +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- RETURN: return +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: error +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 101 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 114 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 114 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 111 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 114 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 10 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: ok +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 111 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 107 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 10 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: assert +| |-- LPAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: cond +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- NOT: ! +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: cond +| | |-- RPAREN: ) +| | |-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: error +| | | | | |-- LPAREN: ( +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- ELSE: else +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: ok +| | | | |-- LPAREN: ( +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: assert_not +| |-- LPAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: cond +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: cond +| | |-- RPAREN: ) +| | |-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: error +| | | | | |-- LPAREN: ( +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- ELSE: else +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: ok +| | | | |-- LPAREN: ( +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: assert_not +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: float_eq +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: HEX2 +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: FACT +| | | | `-- RPAREN: ) +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: assert_not +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: float_eq +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: EVAL1 +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: EVAL2 +| | | | `-- RPAREN: ) +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: assert +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: float_eq +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: EVAL2 +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: EVAL3 +| | | | `-- RPAREN: ) +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: assert +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: float_eq +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | |-- Ident: circle_area +| | | | | | |-- LPAREN: ( +| | | | | | |-- funcRParams +| | | | | | | `-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: RADIUS +| | | | | | `-- RPAREN: ) +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: circle_area +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: FIVE +| | | | | `-- RPAREN: ) +| | | | `-- RPAREN: ) +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: assert_not +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: float_eq +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: CONV1 +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: CONV2 +| | | | `-- RPAREN: ) +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 1.5 +| | |-- RPAREN: ) +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: ok +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- NOT: ! +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- NOT: ! +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 3.3 +| | |-- RPAREN: ) +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: ok +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | |-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: .0 +| | | |-- AND: && +| | | `-- eqExp +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 3 +| | |-- RPAREN: ) +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: error +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | |-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | |-- OR: || +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 0.3 +| | |-- RPAREN: ) +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: ok +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | |-- COMMA: , +| | |-- varDef +| | | |-- Ident: p +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: arr +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 10 +| | | |-- RBRACK: ] +| | | |-- ASSIGN: = +| | | `-- initVal +| | | |-- LBRACE: { +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 1. +| | | |-- COMMA: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | `-- RBRACE: } +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: len +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getfarray +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: arr +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: MAX +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- varDef +| | | | |-- Ident: input +| | | | |-- ASSIGN: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: getfloat +| | | | |-- LPAREN: ( +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- varDef +| | | | |-- Ident: area +| | | | |-- ASSIGN: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: PI +| | | | | |-- MUL: * +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: input +| | | | |-- MUL: * +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: input +| | | |-- COMMA: , +| | | |-- varDef +| | | | |-- Ident: area_trunc +| | | | |-- ASSIGN: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: circle_area +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: input +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: arr +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: p +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: arr +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: p +| | | | | `-- RBRACK: ] +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: input +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putfloat +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: area +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putch +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 32 +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putint +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: area_trunc +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putch +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 10 +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- MUL: * +| | | | `-- unaryExp +| | | | |-- unaryOp +| | | | | `-- SUB: - +| | | | `-- unaryExp +| | | | |-- unaryOp +| | | | | `-- SUB: - +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 1e1 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: p +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: p +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putfarray +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: len +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: arr +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/fft0.tree b/output/lab1/fft0.tree new file mode 100644 index 0000000..edb2bab --- /dev/null +++ b/output/lab1/fft0.tree @@ -0,0 +1,2173 @@ +compUnit +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- INT: int +| |-- constDef +| | |-- Ident: mod +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 998244353 +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | `-- Ident: d +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: multiply +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: a +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: b +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: b +| | | |-- EQ: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- RPAREN: ) +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: b +| | | |-- EQ: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | |-- RPAREN: ) +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | |-- MOD: % +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: mod +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: cur +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: multiply +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | |-- DIV: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: cur +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | |-- LPAREN: ( +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: cur +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: cur +| | | | `-- RPAREN: ) +| | | |-- MOD: % +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: mod +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | |-- MOD: % +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- EQ: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | |-- RPAREN: ) +| | |-- stmt +| | | |-- RETURN: return +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | |-- LPAREN: ( +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: cur +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: a +| | | | | `-- RPAREN: ) +| | | | |-- MOD: % +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: mod +| | | `-- SEMI: ; +| | |-- ELSE: else +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: cur +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: power +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: a +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: b +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: b +| | | |-- EQ: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- RPAREN: ) +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: cur +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: power +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | |-- DIV: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: cur +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: multiply +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: cur +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: cur +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | |-- MOD: % +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- EQ: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | |-- RPAREN: ) +| | |-- stmt +| | | |-- RETURN: return +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: multiply +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: cur +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- ELSE: else +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: cur +| | `-- SEMI: ; +| `-- RBRACE: } +|-- decl +| `-- constDecl +| |-- CONST: const +| |-- bType +| | `-- INT: int +| |-- constDef +| | |-- Ident: maxlen +| | |-- ASSIGN: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 2097152 +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: temp +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: maxlen +| | `-- RBRACK: ] +| |-- COMMA: , +| |-- varDef +| | |-- Ident: a +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: maxlen +| | `-- RBRACK: ] +| |-- COMMA: , +| |-- varDef +| | |-- Ident: b +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: maxlen +| | `-- RBRACK: ] +| |-- COMMA: , +| |-- varDef +| | |-- Ident: c +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: maxlen +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: memmove +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | |-- Ident: dst +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: dst_pos +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | |-- Ident: src +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: len +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: len +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: dst +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: dst_pos +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: src +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: i +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: fft +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | |-- Ident: arr +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: begin_pos +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: n +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: w +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- EQ: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | |-- RPAREN: ) +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- IF: if +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | |-- eqExp +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- MOD: % +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | |-- EQ: == +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | |-- RPAREN: ) +| | | |-- stmt +| | | | |-- lVal +| | | | | |-- Ident: temp +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- DIV: / +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: arr +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: begin_pos +| | | | | `-- RBRACK: ] +| | | | `-- SEMI: ; +| | | |-- ELSE: else +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: temp +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: n +| | | | | | |-- DIV: / +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: arr +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: begin_pos +| | | | `-- RBRACK: ] +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: memmove +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: arr +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: begin_pos +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: temp +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: fft +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: arr +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: begin_pos +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: multiply +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: w +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: w +| | | | `-- RPAREN: ) +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: fft +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: arr +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: begin_pos +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: multiply +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: w +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: w +| | | | `-- RPAREN: ) +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: wn +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- DIV: / +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 2 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- INT: int +| | | |-- varDef +| | | | |-- Ident: x +| | | | |-- ASSIGN: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: arr +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: begin_pos +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- INT: int +| | | |-- varDef +| | | | |-- Ident: y +| | | | |-- ASSIGN: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: arr +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: begin_pos +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | `-- RBRACK: ] +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: arr +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: begin_pos +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | |-- LPAREN: ( +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: x +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | |-- Ident: multiply +| | | | | | |-- LPAREN: ( +| | | | | | |-- funcRParams +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: wn +| | | | | | | |-- COMMA: , +| | | | | | | `-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: y +| | | | | | `-- RPAREN: ) +| | | | | `-- RPAREN: ) +| | | | |-- MOD: % +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: mod +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: arr +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: begin_pos +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | |-- LPAREN: ( +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: x +| | | | | | | |-- SUB: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | |-- Ident: multiply +| | | | | | | |-- LPAREN: ( +| | | | | | | |-- funcRParams +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: wn +| | | | | | | | |-- COMMA: , +| | | | | | | | `-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: y +| | | | | | | `-- RPAREN: ) +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: mod +| | | | | `-- RPAREN: ) +| | | | |-- MOD: % +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: mod +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: wn +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: multiply +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: wn +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: w +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: n +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getarray +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: m +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getarray +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: b +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: d +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: d +| | | |-- LT: < +| | | `-- addExp +| | | |-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: n +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: m +| | | |-- SUB: - +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: d +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: d +| | | | |-- MUL: * +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: fft +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: d +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: power +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 3 +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | |-- LPAREN: ( +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: mod +| | | | | | | |-- SUB: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- RPAREN: ) +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: d +| | | | `-- RPAREN: ) +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: fft +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: d +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: power +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 3 +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | |-- LPAREN: ( +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: mod +| | | | | | | |-- SUB: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- RPAREN: ) +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: d +| | | | `-- RPAREN: ) +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: d +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: a +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: multiply +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: a +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: b +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: fft +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: d +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: power +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 3 +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: mod +| | | | | | |-- SUB: - +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | |-- SUB: - +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | |-- LPAREN: ( +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: mod +| | | | | | | |-- SUB: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- RPAREN: ) +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: d +| | | | `-- RPAREN: ) +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: d +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: a +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: multiply +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: a +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: power +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: d +| | | | | | |-- COMMA: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: mod +| | | | | | |-- SUB: - +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | `-- RPAREN: ) +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putarray +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: n +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: m +| | | | | |-- SUB: - +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/gameoflife-oscillator.tree b/output/lab1/gameoflife-oscillator.tree new file mode 100644 index 0000000..f3c7a28 --- /dev/null +++ b/output/lab1/gameoflife-oscillator.tree @@ -0,0 +1,1810 @@ +compUnit +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: sheet1 +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 500 +| | |-- RBRACK: ] +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 500 +| | |-- RBRACK: ] +| | |-- ASSIGN: = +| | `-- initVal +| | |-- LBRACE: { +| | `-- RBRACE: } +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: sheet2 +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 500 +| | |-- RBRACK: ] +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 500 +| | |-- RBRACK: ] +| | |-- ASSIGN: = +| | `-- initVal +| | |-- LBRACE: { +| | `-- RBRACE: } +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: active +| | |-- ASSIGN: = +| | `-- initVal +| | `-- exp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 1 +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | `-- Ident: width +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | `-- Ident: height +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | `-- Ident: steps +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: read_map +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: width +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: height +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: steps +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getch +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: j +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: j +| | | |-- LE: <= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: height +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LE: <= +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: width +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- INT: int +| | | | |-- varDef +| | | | | |-- Ident: get +| | | | | |-- ASSIGN: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getch +| | | | | |-- LPAREN: ( +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- IF: if +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | |-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: get +| | | | | |-- EQ: == +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 35 +| | | | |-- RPAREN: ) +| | | | |-- stmt +| | | | | `-- block +| | | | | |-- LBRACE: { +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | |-- Ident: sheet1 +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | |-- RBRACK: ] +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- RBRACK: ] +| | | | | | |-- ASSIGN: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- SEMI: ; +| | | | | `-- RBRACE: } +| | | | |-- ELSE: else +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: sheet1 +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 0 +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: i +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: getch +| | | | |-- LPAREN: ( +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: put_map +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: j +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: j +| | | |-- LE: <= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: height +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LE: <= +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: width +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- IF: if +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | |-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: sheet1 +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | |-- EQ: == +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- RPAREN: ) +| | | | |-- stmt +| | | | | `-- block +| | | | | |-- LBRACE: { +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | |-- Ident: putch +| | | | | | | |-- LPAREN: ( +| | | | | | | |-- funcRParams +| | | | | | | | `-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 35 +| | | | | | | `-- RPAREN: ) +| | | | | | `-- SEMI: ; +| | | | | `-- RBRACE: } +| | | | |-- ELSE: else +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | |-- Ident: putch +| | | | | | |-- LPAREN: ( +| | | | | | |-- funcRParams +| | | | | | | `-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 46 +| | | | | | `-- RPAREN: ) +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: i +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putch +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 10 +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: swap12 +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: j +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: j +| | | |-- LE: <= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: height +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LE: <= +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: width +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: sheet1 +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: sheet2 +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: i +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: step +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | |-- Ident: source +| | | |-- LBRACK: [ +| | | |-- RBRACK: ] +| | | |-- LBRACK: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 500 +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | |-- Ident: target +| | |-- LBRACK: [ +| | |-- RBRACK: ] +| | |-- LBRACK: [ +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 500 +| | `-- RBRACK: ] +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: j +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: j +| | | |-- LE: <= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: height +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LE: <= +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: width +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- INT: int +| | | | |-- varDef +| | | | | |-- Ident: alive_count +| | | | | |-- ASSIGN: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | |-- addExp +| | | | | | | |-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | |-- addExp +| | | | | | | | | | |-- addExp +| | | | | | | | | | | |-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | |-- Ident: source +| | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | |-- addExp +| | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | `-- Ident: j +| | | | | | | | | | | | | |-- SUB: - +| | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | `-- IntConst: 1 +| | | | | | | | | | | | |-- RBRACK: ] +| | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | |-- addExp +| | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | |-- SUB: - +| | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | `-- IntConst: 1 +| | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | |-- ADD: + +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- lVal +| | | | | | | | | | | |-- Ident: source +| | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | |-- exp +| | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | |-- addExp +| | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | `-- Ident: j +| | | | | | | | | | | | |-- SUB: - +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- number +| | | | | | | | | | | | `-- IntConst: 1 +| | | | | | | | | | | |-- RBRACK: ] +| | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | |-- exp +| | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | |-- ADD: + +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | |-- Ident: source +| | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | |-- exp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | |-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | `-- Ident: j +| | | | | | | | | | | |-- SUB: - +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- number +| | | | | | | | | | | `-- IntConst: 1 +| | | | | | | | | | |-- RBRACK: ] +| | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | |-- exp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | |-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | |-- ADD: + +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- number +| | | | | | | | | | | `-- IntConst: 1 +| | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | |-- ADD: + +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | |-- Ident: source +| | | | | | | | | |-- LBRACK: [ +| | | | | | | | | |-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: j +| | | | | | | | | |-- RBRACK: ] +| | | | | | | | | |-- LBRACK: [ +| | | | | | | | | |-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | |-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- lVal +| | | | | | | | | | | `-- Ident: i +| | | | | | | | | | |-- SUB: - +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- number +| | | | | | | | | | `-- IntConst: 1 +| | | | | | | | | `-- RBRACK: ] +| | | | | | | | |-- ADD: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | |-- Ident: source +| | | | | | | | |-- LBRACK: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: j +| | | | | | | | |-- RBRACK: ] +| | | | | | | | |-- LBRACK: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | |-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: i +| | | | | | | | | |-- ADD: + +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- number +| | | | | | | | | `-- IntConst: 1 +| | | | | | | | `-- RBRACK: ] +| | | | | | | |-- ADD: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: source +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: j +| | | | | | | | |-- ADD: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 1 +| | | | | | | |-- RBRACK: ] +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: i +| | | | | | | | |-- SUB: - +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 1 +| | | | | | | `-- RBRACK: ] +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: source +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | |-- ADD: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: source +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | |-- RBRACK: ] +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- RBRACK: ] +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- IF: if +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | |-- lAndExp +| | | | | | `-- eqExp +| | | | | | |-- eqExp +| | | | | | | `-- relExp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: source +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | |-- RBRACK: ] +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- RBRACK: ] +| | | | | | |-- EQ: == +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | |-- AND: && +| | | | | `-- eqExp +| | | | | |-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: alive_count +| | | | | |-- EQ: == +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | |-- RPAREN: ) +| | | | |-- stmt +| | | | | `-- block +| | | | | |-- LBRACE: { +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | |-- Ident: target +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | |-- RBRACK: ] +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- RBRACK: ] +| | | | | | |-- ASSIGN: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- SEMI: ; +| | | | | `-- RBRACE: } +| | | | |-- ELSE: else +| | | | `-- stmt +| | | | |-- IF: if +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | |-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: alive_count +| | | | | |-- EQ: == +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 3 +| | | | |-- RPAREN: ) +| | | | |-- stmt +| | | | | `-- block +| | | | | |-- LBRACE: { +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | |-- Ident: target +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | |-- RBRACK: ] +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- RBRACK: ] +| | | | | | |-- ASSIGN: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- SEMI: ; +| | | | | `-- RBRACE: } +| | | | |-- ELSE: else +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: target +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- RBRACK: ] +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- RBRACK: ] +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 0 +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: i +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: read_map +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: steps +| | | |-- GT: > +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- IF: if +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | |-- eqExp +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: active +| | | | |-- EQ: == +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- RPAREN: ) +| | | |-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | |-- Ident: step +| | | | | | |-- LPAREN: ( +| | | | | | |-- funcRParams +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: sheet1 +| | | | | | | |-- COMMA: , +| | | | | | | `-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: sheet2 +| | | | | | `-- RPAREN: ) +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: active +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- ELSE: else +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: step +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: sheet2 +| | | | | | |-- COMMA: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: sheet1 +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: active +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: steps +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: steps +| | | | |-- SUB: - +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: active +| | | |-- EQ: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 2 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: swap12 +| | | | |-- LPAREN: ( +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: put_map +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/if-combine3.tree b/output/lab1/if-combine3.tree new file mode 100644 index 0000000..b1ff0c4 --- /dev/null +++ b/output/lab1/if-combine3.tree @@ -0,0 +1,5394 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: func +| |-- LPAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: n +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: sum +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 200 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: j +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: s +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 100 +| | | `-- RBRACK: ] +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: m +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: m +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 100 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: s +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: m +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: m +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: m +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: j +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- IF: if +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- GT: > +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: s +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- IF: if +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | `-- relExp +| | | | | |-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- GT: > +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | |-- RPAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: s +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 2 +| | | | | | `-- RBRACK: ] +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- IF: if +| | | | | |-- LPAREN: ( +| | | | | |-- cond +| | | | | | `-- lOrExp +| | | | | | `-- lAndExp +| | | | | | `-- eqExp +| | | | | | `-- relExp +| | | | | | |-- relExp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- GT: > +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 3 +| | | | | |-- RPAREN: ) +| | | | | `-- stmt +| | | | | `-- block +| | | | | |-- LBRACE: { +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | |-- Ident: s +| | | | | | | |-- LBRACK: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 3 +| | | | | | | `-- RBRACK: ] +| | | | | | |-- ASSIGN: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 3 +| | | | | | `-- SEMI: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- IF: if +| | | | | | |-- LPAREN: ( +| | | | | | |-- cond +| | | | | | | `-- lOrExp +| | | | | | | `-- lAndExp +| | | | | | | `-- eqExp +| | | | | | | `-- relExp +| | | | | | | |-- relExp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- GT: > +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 4 +| | | | | | |-- RPAREN: ) +| | | | | | `-- stmt +| | | | | | `-- block +| | | | | | |-- LBRACE: { +| | | | | | |-- blockItem +| | | | | | | `-- stmt +| | | | | | | |-- lVal +| | | | | | | | |-- Ident: s +| | | | | | | | |-- LBRACK: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- number +| | | | | | | | | `-- IntConst: 4 +| | | | | | | | `-- RBRACK: ] +| | | | | | | |-- ASSIGN: = +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 4 +| | | | | | | `-- SEMI: ; +| | | | | | |-- blockItem +| | | | | | | `-- stmt +| | | | | | | |-- IF: if +| | | | | | | |-- LPAREN: ( +| | | | | | | |-- cond +| | | | | | | | `-- lOrExp +| | | | | | | | `-- lAndExp +| | | | | | | | `-- eqExp +| | | | | | | | `-- relExp +| | | | | | | | |-- relExp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: i +| | | | | | | | |-- GT: > +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 5 +| | | | | | | |-- RPAREN: ) +| | | | | | | `-- stmt +| | | | | | | `-- block +| | | | | | | |-- LBRACE: { +| | | | | | | |-- blockItem +| | | | | | | | `-- stmt +| | | | | | | | |-- lVal +| | | | | | | | | |-- Ident: s +| | | | | | | | | |-- LBRACK: [ +| | | | | | | | | |-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- number +| | | | | | | | | | `-- IntConst: 5 +| | | | | | | | | `-- RBRACK: ] +| | | | | | | | |-- ASSIGN: = +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- number +| | | | | | | | | `-- IntConst: 5 +| | | | | | | | `-- SEMI: ; +| | | | | | | |-- blockItem +| | | | | | | | `-- stmt +| | | | | | | | |-- IF: if +| | | | | | | | |-- LPAREN: ( +| | | | | | | | |-- cond +| | | | | | | | | `-- lOrExp +| | | | | | | | | `-- lAndExp +| | | | | | | | | `-- eqExp +| | | | | | | | | `-- relExp +| | | | | | | | | |-- relExp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: i +| | | | | | | | | |-- GT: > +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- number +| | | | | | | | | `-- IntConst: 6 +| | | | | | | | |-- RPAREN: ) +| | | | | | | | `-- stmt +| | | | | | | | `-- block +| | | | | | | | |-- LBRACE: { +| | | | | | | | |-- blockItem +| | | | | | | | | `-- stmt +| | | | | | | | | |-- lVal +| | | | | | | | | | |-- Ident: s +| | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | |-- exp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- number +| | | | | | | | | | | `-- IntConst: 6 +| | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | |-- ASSIGN: = +| | | | | | | | | |-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- number +| | | | | | | | | | `-- IntConst: 6 +| | | | | | | | | `-- SEMI: ; +| | | | | | | | |-- blockItem +| | | | | | | | | `-- stmt +| | | | | | | | | |-- IF: if +| | | | | | | | | |-- LPAREN: ( +| | | | | | | | | |-- cond +| | | | | | | | | | `-- lOrExp +| | | | | | | | | | `-- lAndExp +| | | | | | | | | | `-- eqExp +| | | | | | | | | | `-- relExp +| | | | | | | | | | |-- relExp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- lVal +| | | | | | | | | | | `-- Ident: i +| | | | | | | | | | |-- GT: > +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- number +| | | | | | | | | | `-- IntConst: 7 +| | | | | | | | | |-- RPAREN: ) +| | | | | | | | | `-- stmt +| | | | | | | | | `-- block +| | | | | | | | | |-- LBRACE: { +| | | | | | | | | |-- blockItem +| | | | | | | | | | `-- stmt +| | | | | | | | | | |-- lVal +| | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | |-- exp +| | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- number +| | | | | | | | | | | | `-- IntConst: 7 +| | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | |-- exp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- number +| | | | | | | | | | | `-- IntConst: 7 +| | | | | | | | | | `-- SEMI: ; +| | | | | | | | | |-- blockItem +| | | | | | | | | | `-- stmt +| | | | | | | | | | |-- IF: if +| | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | |-- cond +| | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | `-- eqExp +| | | | | | | | | | | `-- relExp +| | | | | | | | | | | |-- relExp +| | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | |-- GT: > +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- number +| | | | | | | | | | | `-- IntConst: 8 +| | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | `-- stmt +| | | | | | | | | | `-- block +| | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | |-- blockItem +| | | | | | | | | | | `-- stmt +| | | | | | | | | | | |-- lVal +| | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | `-- IntConst: 8 +| | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | |-- exp +| | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- number +| | | | | | | | | | | | `-- IntConst: 8 +| | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | |-- blockItem +| | | | | | | | | | | `-- stmt +| | | | | | | | | | | |-- IF: if +| | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | |-- cond +| | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- number +| | | | | | | | | | | | `-- IntConst: 9 +| | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | `-- stmt +| | | | | | | | | | | `-- block +| | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | `-- IntConst: 9 +| | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | `-- IntConst: 9 +| | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | `-- IntConst: 10 +| | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | `-- block +| | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | `-- IntConst: 10 +| | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | `-- IntConst: 10 +| | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | `-- IntConst: 11 +| | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | `-- IntConst: 11 +| | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | `-- IntConst: 11 +| | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | `-- IntConst: 12 +| | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | `-- IntConst: 12 +| | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | `-- IntConst: 12 +| | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | `-- IntConst: 13 +| | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | `-- IntConst: 13 +| | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | `-- IntConst: 13 +| | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | `-- IntConst: 14 +| | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | `-- IntConst: 14 +| | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | `-- IntConst: 14 +| | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | `-- IntConst: 15 +| | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | `-- IntConst: 15 +| | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | `-- IntConst: 15 +| | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | `-- IntConst: 16 +| | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | `-- IntConst: 16 +| | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | `-- IntConst: 16 +| | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | `-- IntConst: 17 +| | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 17 +| | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | `-- IntConst: 17 +| | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | `-- IntConst: 18 +| | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 18 +| | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 18 +| | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 19 +| | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 19 +| | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 19 +| | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 20 +| | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 20 +| | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 20 +| | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 21 +| | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 21 +| | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 21 +| | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 22 +| | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 22 +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 22 +| | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 23 +| | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 23 +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 23 +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 24 +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 24 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 24 +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 25 +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 25 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 25 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 26 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 26 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 26 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 27 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 27 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 27 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 28 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 28 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 28 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 29 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 29 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 29 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 30 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 30 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 30 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 31 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 31 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 31 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 32 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 32 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 32 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 33 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 33 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 33 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 34 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 34 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 34 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 35 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 35 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 35 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 36 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 36 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 36 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 37 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 37 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 37 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 38 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 38 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 38 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 39 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 39 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 39 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 40 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 40 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 40 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 41 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 41 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 41 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 42 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 42 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 42 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 43 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 43 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 43 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 44 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 44 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 44 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 45 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 45 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 45 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 46 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 46 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 46 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 47 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 47 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 47 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 48 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 48 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 48 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 49 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 49 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 49 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 50 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 50 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 50 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 51 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 51 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 51 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 52 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 52 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 52 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 53 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 53 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 53 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 54 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 54 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 54 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 55 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 55 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 55 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 56 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 56 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 56 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 57 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 57 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 57 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 58 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 58 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 58 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 59 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 59 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 59 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 60 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 60 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 60 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 61 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 61 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 61 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 62 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 62 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 62 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 63 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 63 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 63 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 64 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 64 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 64 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 65 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 65 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 65 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 66 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 66 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 66 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 67 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 67 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 67 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 68 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 68 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 68 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 69 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 69 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 69 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 70 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 70 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 70 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 71 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 71 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 71 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 72 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 72 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 72 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 73 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 73 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 73 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 74 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 74 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 74 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 75 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 75 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 75 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 76 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 76 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 76 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 77 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 77 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 77 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 78 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 78 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 78 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 79 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 79 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 79 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 80 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 80 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 80 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 81 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 81 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 81 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 82 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 82 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 82 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 83 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 83 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 83 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 84 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 84 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 84 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 85 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 85 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 85 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 86 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 86 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 86 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 87 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 87 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 87 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 88 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 88 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 88 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 89 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 89 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 89 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 90 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 90 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 90 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 91 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 91 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 91 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 92 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 92 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 92 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 93 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 93 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 93 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 94 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 94 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 94 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 95 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 95 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 95 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 96 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 96 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 96 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 97 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 97 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 97 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 98 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 98 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 98 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 99 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 99 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 99 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | | `-- RBRACE: } +| | | | | | | | | | `-- RBRACE: } +| | | | | | | | | `-- RBRACE: } +| | | | | | | | `-- RBRACE: } +| | | | | | | `-- RBRACE: } +| | | | | | `-- RBRACE: } +| | | | | `-- RBRACE: } +| | | | `-- RBRACE: } +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- INT: int +| | | |-- varDef +| | | | |-- Ident: m +| | | | |-- ASSIGN: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: m +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 100 +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: sum +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: sum +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: s +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: m +| | | | | `-- RBRACK: ] +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: m +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: m +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: sum +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: sum +| | | | |-- MOD: % +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 65535 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: sum +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: loopcount +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putint +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: func +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: loopcount +| | | | `-- RPAREN: ) +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 10 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/large_loop_array_2.tree b/output/lab1/large_loop_array_2.tree new file mode 100644 index 0000000..da72747 --- /dev/null +++ b/output/lab1/large_loop_array_2.tree @@ -0,0 +1,779 @@ +compUnit +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: COUNT +| | |-- ASSIGN: = +| | `-- initVal +| | `-- exp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 500000 +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- FLOAT: float +| |-- Ident: loop +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: x +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: y +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: length +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: accumulator +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 0.0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: length +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: accumulator +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: accumulator +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: x +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | |-- MUL: * +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: y +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: accumulator +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- COMMA: , +| | |-- varDef +| | | |-- Ident: j +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: len +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: x +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 4096 +| | | `-- RBRACK: ] +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: y +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 4096 +| | | `-- RBRACK: ] +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: total +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 0.0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: a +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 0.0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: b +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 1.0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: COUNT +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- IF: if +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- MOD: % +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 10 +| | | |-- RPAREN: ) +| | | |-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: a +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- FloatConst: 0.0 +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: b +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- FloatConst: 1.0 +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- ELSE: else +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: a +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: a +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- FloatConst: 0.1 +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: b +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: b +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- FloatConst: 0.2 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: len +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: x +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: a +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: y +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: b +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: total +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: total +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: loop +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: x +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: y +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: len +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | |-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | |-- LPAREN: ( +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: total +| | | | | | |-- SUB: - +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- FloatConst: 11442437121638400.000000 +| | | | | `-- RPAREN: ) +| | | | |-- LE: <= +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 0.000001 +| | | |-- OR: || +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | |-- LPAREN: ( +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: total +| | | | | |-- SUB: - +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- FloatConst: 11442437121638400.000000 +| | | | `-- RPAREN: ) +| | | |-- GE: >= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SUB: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 0.000001 +| | |-- RPAREN: ) +| | |-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: putint +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 0 +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- RETURN: return +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- ELSE: else +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putint +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- RETURN: return +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/simple_add.tree b/output/lab1/simple_add.tree new file mode 100644 index 0000000..e36bb59 --- /dev/null +++ b/output/lab1/simple_add.tree @@ -0,0 +1,63 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: a +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: b +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 2 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | |-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | |-- ADD: + +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: b +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/transpose0.tree b/output/lab1/transpose0.tree new file mode 100644 index 0000000..4fefe00 --- /dev/null +++ b/output/lab1/transpose0.tree @@ -0,0 +1,890 @@ +compUnit +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: matrix +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 20000000 +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- INT: int +| |-- varDef +| | |-- Ident: a +| | |-- LBRACK: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 100000 +| | `-- RBRACK: ] +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: transpose +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: n +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | |-- Ident: matrix +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: rowsize +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: colsize +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- DIV: / +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: rowsize +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: j +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: colsize +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: rowsize +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- IF: if +| | | | |-- LPAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | `-- relExp +| | | | | |-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- LT: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- RPAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- LBRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ASSIGN: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- SEMI: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- CONTINUE: continue +| | | | | `-- SEMI: ; +| | | | `-- RBRACE: } +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- INT: int +| | | | |-- varDef +| | | | | |-- Ident: curr +| | | | | |-- ASSIGN: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: matrix +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- MUL: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: rowsize +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: matrix +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | |-- MUL: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: colsize +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: matrix +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- MUL: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: rowsize +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: matrix +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- MUL: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: rowsize +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RBRACK: ] +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: curr +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SUB: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: n +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: len +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getarray +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: matrix +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: len +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: transpose +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: matrix +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: a +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: ans +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: len +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: ans +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: ans +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- MUL: * +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- MUL: * +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: matrix +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: ans +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- RPAREN: ) +| | `-- stmt +| | |-- lVal +| | | `-- Ident: ans +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SUB: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: ans +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putint +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: ans +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 10 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/tree.txt b/output/lab1/tree.txt new file mode 100644 index 0000000..80e165e --- /dev/null +++ b/output/lab1/tree.txt @@ -0,0 +1,1573 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: func +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: i +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: j +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | |-- LPAREN: ( +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | |-- LPAREN: ( +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | |-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: i +| | | | | | | | | |-- ADD: + +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: j +| | | | | | | | `-- RPAREN: ) +| | | | | | | |-- MUL: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | |-- LPAREN: ( +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | |-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: i +| | | | | | | | | |-- ADD: + +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: j +| | | | | | | | |-- ADD: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 1 +| | | | | | | `-- RPAREN: ) +| | | | | | |-- DIV: / +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- FLOAT: float +| |-- Ident: Vectordot +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: v +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: u +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: n +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: sum +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: sum +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: sum +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: v +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | |-- MUL: * +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: u +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: sum +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: mult1 +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: v +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: out +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: n +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- COMMA: , +| | |-- varDef +| | | |-- Ident: j +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: sum +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: sum +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: sum +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: v +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | |-- Ident: func +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- COMMA: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: out +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: sum +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: mult2 +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: v +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: out +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: n +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- COMMA: , +| | |-- varDef +| | | |-- Ident: j +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: sum +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: sum +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: sum +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: v +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | |-- Ident: func +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- COMMA: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: out +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: sum +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: mult_combin +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: v +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: out +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: n +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- FLOAT: float +| | |-- Ident: tmp +| | |-- LBRACK: [ +| | `-- RBRACK: ] +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: mult1 +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: v +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: tmp +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: mult2 +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: tmp +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: out +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| `-- RBRACE: } +|-- decl +| `-- varDecl +| |-- bType +| | `-- FLOAT: float +| |-- varDef +| | |-- Ident: temp +| | |-- ASSIGN: = +| | `-- initVal +| | `-- exp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 1 +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- FLOAT: float +| |-- Ident: my_sqrt +| |-- LPAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- FLOAT: float +| | `-- Ident: input +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | |-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: temp +| | | | | |-- SUB: - +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: input +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: temp +| | | | |-- GT: > +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 1e-6 +| | | |-- OR: || +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: temp +| | | | |-- SUB: - +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: input +| | | | |-- DIV: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: temp +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SUB: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 1e-6 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: temp +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | |-- LPAREN: ( +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: temp +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: input +| | | | | | |-- DIV: / +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: temp +| | | | | `-- RPAREN: ) +| | | | |-- DIV: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: temp +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: n +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 100000 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- LE: <= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: n +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2000 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: vectorA +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 100000 +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- varDef +| | | |-- Ident: vectorB +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 100000 +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- varDef +| | | |-- Ident: Vectortmp +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 100000 +| | | `-- RBRACK: ] +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | `-- Ident: i +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: vectorA +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1000 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: mult_combin +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorA +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorB +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: Vectortmp +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: mult_combin +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorB +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorA +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: Vectortmp +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: result +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: my_sqrt +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: Vectordot +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: vectorA +| | | | | | |-- COMMA: , +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: vectorB +| | | | | | |-- COMMA: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | `-- RPAREN: ) +| | | | |-- DIV: / +| | | | `-- unaryExp +| | | | |-- Ident: Vectordot +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorB +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorB +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: n +| | | | `-- RPAREN: ) +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | |-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: result +| | | | | |-- SUB: - +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- FloatConst: 1.000000 +| | | | |-- LE: <= +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 1e-6 +| | | |-- AND: && +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: result +| | | | |-- SUB: - +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 1.000000 +| | | |-- GE: >= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SUB: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 1e-6 +| | |-- RPAREN: ) +| | |-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: putint +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- ELSE: else +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putint +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 10 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/output/lab1/vector_mul3.tree b/output/lab1/vector_mul3.tree new file mode 100644 index 0000000..80e165e --- /dev/null +++ b/output/lab1/vector_mul3.tree @@ -0,0 +1,1573 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: func +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: i +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: j +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | |-- LPAREN: ( +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | |-- LPAREN: ( +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | |-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: i +| | | | | | | | | |-- ADD: + +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: j +| | | | | | | | `-- RPAREN: ) +| | | | | | | |-- MUL: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | |-- LPAREN: ( +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | |-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: i +| | | | | | | | | |-- ADD: + +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: j +| | | | | | | | |-- ADD: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 1 +| | | | | | | `-- RPAREN: ) +| | | | | | |-- DIV: / +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- FLOAT: float +| |-- Ident: Vectordot +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: v +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: u +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: n +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: sum +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: sum +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: sum +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: v +| | | | | |-- LBRACK: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RBRACK: ] +| | | | |-- MUL: * +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: u +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: sum +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: mult1 +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: v +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: out +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: n +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- COMMA: , +| | |-- varDef +| | | |-- Ident: j +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: sum +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: sum +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: sum +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: v +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | |-- Ident: func +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- COMMA: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: out +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: sum +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: mult2 +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: v +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: out +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- INT: int +| | `-- Ident: n +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- COMMA: , +| | |-- varDef +| | | |-- Ident: j +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: sum +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- WHILE: while +| | | |-- LPAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LT: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- RPAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: sum +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: sum +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: v +| | | | | | |-- LBRACK: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- RBRACK: ] +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | |-- Ident: func +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- COMMA: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- ASSIGN: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- ADD: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: out +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: sum +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- VOID: void +| |-- Ident: mult_combin +| |-- LPAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: v +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- FLOAT: float +| | | |-- Ident: out +| | | |-- LBRACK: [ +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- INT: int +| | | `-- Ident: n +| | |-- COMMA: , +| | `-- funcFParam +| | |-- bType +| | | `-- FLOAT: float +| | |-- Ident: tmp +| | |-- LBRACK: [ +| | `-- RBRACK: ] +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: mult1 +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: v +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: tmp +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: mult2 +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: tmp +| | | | |-- COMMA: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: out +| | | | |-- COMMA: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| `-- RBRACE: } +|-- decl +| `-- varDecl +| |-- bType +| | `-- FLOAT: float +| |-- varDef +| | |-- Ident: temp +| | |-- ASSIGN: = +| | `-- initVal +| | `-- exp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 1 +| `-- SEMI: ; +|-- funcDef +| |-- funcType +| | `-- FLOAT: float +| |-- Ident: my_sqrt +| |-- LPAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- FLOAT: float +| | `-- Ident: input +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | |-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: temp +| | | | | |-- SUB: - +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: input +| | | | | |-- DIV: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: temp +| | | | |-- GT: > +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 1e-6 +| | | |-- OR: || +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: temp +| | | | |-- SUB: - +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: input +| | | | |-- DIV: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: temp +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SUB: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 1e-6 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: temp +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | |-- LPAREN: ( +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: temp +| | | | | | |-- ADD: + +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: input +| | | | | | |-- DIV: / +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: temp +| | | | | `-- RPAREN: ) +| | | | |-- DIV: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: temp +| | `-- SEMI: ; +| `-- RBRACE: } +|-- funcDef +| |-- funcType +| | `-- INT: int +| |-- Ident: main +| |-- LPAREN: ( +| |-- RPAREN: ) +| `-- block +| |-- LBRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | |-- Ident: n +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 100000 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- LE: <= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: n +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2000 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: vectorA +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 100000 +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- varDef +| | | |-- Ident: vectorB +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 100000 +| | | `-- RBRACK: ] +| | |-- COMMA: , +| | |-- varDef +| | | |-- Ident: Vectortmp +| | | |-- LBRACK: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 100000 +| | | `-- RBRACK: ] +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- INT: int +| | |-- varDef +| | | `-- Ident: i +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: vectorA +| | | | |-- LBRACK: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- RBRACK: ] +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- ASSIGN: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- WHILE: while +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LT: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1000 +| | |-- RPAREN: ) +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: mult_combin +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorA +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorB +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: Vectortmp +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: mult_combin +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorB +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorA +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: Vectortmp +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- ASSIGN: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ADD: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- LPAREN: ( +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- FLOAT: float +| | |-- varDef +| | | |-- Ident: result +| | | |-- ASSIGN: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: my_sqrt +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: Vectordot +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: vectorA +| | | | | | |-- COMMA: , +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: vectorB +| | | | | | |-- COMMA: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | `-- RPAREN: ) +| | | | |-- DIV: / +| | | | `-- unaryExp +| | | | |-- Ident: Vectordot +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorB +| | | | | |-- COMMA: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorB +| | | | | |-- COMMA: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: n +| | | | `-- RPAREN: ) +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- IF: if +| | |-- LPAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | |-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: result +| | | | | |-- SUB: - +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- FloatConst: 1.000000 +| | | | |-- LE: <= +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 1e-6 +| | | |-- AND: && +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: result +| | | | |-- SUB: - +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 1.000000 +| | | |-- GE: >= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SUB: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 1e-6 +| | |-- RPAREN: ) +| | |-- stmt +| | | `-- block +| | | |-- LBRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: putint +| | | | | |-- LPAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- RPAREN: ) +| | | | `-- SEMI: ; +| | | `-- RBRACE: } +| | |-- ELSE: else +| | `-- stmt +| | `-- block +| | |-- LBRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putint +| | | | |-- LPAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- RPAREN: ) +| | | `-- SEMI: ; +| | `-- RBRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- LPAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 10 +| | | `-- RPAREN: ) +| | `-- SEMI: ; +| |-- blockItem +| | `-- stmt +| | |-- RETURN: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- SEMI: ; +| `-- RBRACE: } +`-- EOF: diff --git a/scripts/lab1_build_test.sh b/scripts/lab1_build_test.sh index 70ef27c..35395ef 100644 --- a/scripts/lab1_build_test.sh +++ b/scripts/lab1_build_test.sh @@ -108,10 +108,9 @@ for TEST_DIR in "${TEST_DIRS[@]}"; do ((FAIL++)) || true fi else - # 只检查返回码,不输出语法树 - if "$COMPILER" --emit-parse-tree "$sy_file" > /dev/null 2>&1; then - echo -e " ${GREEN}PASS${NC} $rel" - ((PASS++)) || true + if "$COMPILER" --emit-parse-tree "$sy_file" > "./output/lab1/$(basename "$sy_file" .sy).tree" 2>&1; then + echo -e " ${GREEN}PASS${NC} $rel" + ((PASS++)) || true else echo -e " ${RED}FAIL${NC} $rel" FAIL_LIST+=("$rel") diff --git a/src/antlr4/.antlr/SysYBaseListener.java b/src/antlr4/.antlr/SysYBaseListener.java index bda7548..38ff166 100644 --- a/src/antlr4/.antlr/SysYBaseListener.java +++ b/src/antlr4/.antlr/SysYBaseListener.java @@ -1,4 +1,4 @@ -// Generated from //wsl.localhost/Ubuntu/home/hw/nudt-compiler-cpp/src/antlr4/SysY.g4 by ANTLR 4.13.1 +// Generated from /root/sysy2026/nudt-compiler-cpp/src/antlr4/SysY.g4 by ANTLR 4.13.1 import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ErrorNode; @@ -40,13 +40,61 @@ public class SysYBaseListener implements SysYListener { * *

The default implementation does nothing.

*/ - @Override public void enterBtype(SysYParser.BtypeContext ctx) { } + @Override public void enterConstDecl(SysYParser.ConstDeclContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void exitBtype(SysYParser.BtypeContext ctx) { } + @Override public void exitConstDecl(SysYParser.ConstDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBType(SysYParser.BTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBType(SysYParser.BTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstDef(SysYParser.ConstDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstDef(SysYParser.ConstDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstInitVal(SysYParser.ConstInitValContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstInitVal(SysYParser.ConstInitValContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVarDecl(SysYParser.VarDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVarDecl(SysYParser.VarDeclContext ctx) { } /** * {@inheritDoc} * @@ -64,13 +112,13 @@ public class SysYBaseListener implements SysYListener { * *

The default implementation does nothing.

*/ - @Override public void enterInitValue(SysYParser.InitValueContext ctx) { } + @Override public void enterInitVal(SysYParser.InitValContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void exitInitValue(SysYParser.InitValueContext ctx) { } + @Override public void exitInitVal(SysYParser.InitValContext ctx) { } /** * {@inheritDoc} * @@ -100,13 +148,37 @@ public class SysYBaseListener implements SysYListener { * *

The default implementation does nothing.

*/ - @Override public void enterBlockStmt(SysYParser.BlockStmtContext ctx) { } + @Override public void enterFuncFParams(SysYParser.FuncFParamsContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void exitBlockStmt(SysYParser.BlockStmtContext ctx) { } + @Override public void exitFuncFParams(SysYParser.FuncFParamsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFuncFParam(SysYParser.FuncFParamContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFuncFParam(SysYParser.FuncFParamContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBlock(SysYParser.BlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBlock(SysYParser.BlockContext ctx) { } /** * {@inheritDoc} * @@ -124,97 +196,145 @@ public class SysYBaseListener implements SysYListener { * *

The default implementation does nothing.

*/ - @Override public void enterStmt(SysYParser.StmtContext ctx) { } + @Override public void enterAssignStmt(SysYParser.AssignStmtContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void exitStmt(SysYParser.StmtContext ctx) { } + @Override public void exitAssignStmt(SysYParser.AssignStmtContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void enterReturnStmt(SysYParser.ReturnStmtContext ctx) { } + @Override public void enterExpStmt(SysYParser.ExpStmtContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void exitReturnStmt(SysYParser.ReturnStmtContext ctx) { } + @Override public void exitExpStmt(SysYParser.ExpStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBlockStmt(SysYParser.BlockStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBlockStmt(SysYParser.BlockStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIfStmt(SysYParser.IfStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIfStmt(SysYParser.IfStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWhileStmt(SysYParser.WhileStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWhileStmt(SysYParser.WhileStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBreakStmt(SysYParser.BreakStmtContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void enterVarExp(SysYParser.VarExpContext ctx) { } + @Override public void exitBreakStmt(SysYParser.BreakStmtContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void exitVarExp(SysYParser.VarExpContext ctx) { } + @Override public void enterContinueStmt(SysYParser.ContinueStmtContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void enterNumberExp(SysYParser.NumberExpContext ctx) { } + @Override public void exitContinueStmt(SysYParser.ContinueStmtContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void exitNumberExp(SysYParser.NumberExpContext ctx) { } + @Override public void enterReturnStmt(SysYParser.ReturnStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReturnStmt(SysYParser.ReturnStmtContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void enterParenExp(SysYParser.ParenExpContext ctx) { } + @Override public void enterExp(SysYParser.ExpContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void exitParenExp(SysYParser.ParenExpContext ctx) { } + @Override public void exitExp(SysYParser.ExpContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void enterAdditiveExp(SysYParser.AdditiveExpContext ctx) { } + @Override public void enterCond(SysYParser.CondContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void exitAdditiveExp(SysYParser.AdditiveExpContext ctx) { } + @Override public void exitCond(SysYParser.CondContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void enterVar(SysYParser.VarContext ctx) { } + @Override public void enterLVal(SysYParser.LValContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void exitVar(SysYParser.VarContext ctx) { } + @Override public void exitLVal(SysYParser.LValContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void enterLValue(SysYParser.LValueContext ctx) { } + @Override public void enterPrimaryExp(SysYParser.PrimaryExpContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void exitLValue(SysYParser.LValueContext ctx) { } + @Override public void exitPrimaryExp(SysYParser.PrimaryExpContext ctx) { } /** * {@inheritDoc} * @@ -227,6 +347,222 @@ public class SysYBaseListener implements SysYListener { *

The default implementation does nothing.

*/ @Override public void exitNumber(SysYParser.NumberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimaryUnaryExp(SysYParser.PrimaryUnaryExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimaryUnaryExp(SysYParser.PrimaryUnaryExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCallUnaryExp(SysYParser.CallUnaryExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCallUnaryExp(SysYParser.CallUnaryExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOpUnaryExp(SysYParser.OpUnaryExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOpUnaryExp(SysYParser.OpUnaryExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnaryOp(SysYParser.UnaryOpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnaryOp(SysYParser.UnaryOpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFuncRParams(SysYParser.FuncRParamsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFuncRParams(SysYParser.FuncRParamsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBinaryMulExp(SysYParser.BinaryMulExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBinaryMulExp(SysYParser.BinaryMulExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnaryMulExp(SysYParser.UnaryMulExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnaryMulExp(SysYParser.UnaryMulExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBinaryAddExp(SysYParser.BinaryAddExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBinaryAddExp(SysYParser.BinaryAddExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMulAddExp(SysYParser.MulAddExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMulAddExp(SysYParser.MulAddExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAddRelExp(SysYParser.AddRelExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAddRelExp(SysYParser.AddRelExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBinaryRelExp(SysYParser.BinaryRelExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBinaryRelExp(SysYParser.BinaryRelExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBinaryEqExp(SysYParser.BinaryEqExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBinaryEqExp(SysYParser.BinaryEqExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRelEqExp(SysYParser.RelEqExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRelEqExp(SysYParser.RelEqExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEqLAndExp(SysYParser.EqLAndExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEqLAndExp(SysYParser.EqLAndExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBinaryLAndExp(SysYParser.BinaryLAndExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBinaryLAndExp(SysYParser.BinaryLAndExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAndLOrExp(SysYParser.AndLOrExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAndLOrExp(SysYParser.AndLOrExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBinaryLOrExp(SysYParser.BinaryLOrExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBinaryLOrExp(SysYParser.BinaryLOrExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstExp(SysYParser.ConstExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstExp(SysYParser.ConstExpContext ctx) { } /** * {@inheritDoc} diff --git a/src/antlr4/.antlr/SysYLexer.java b/src/antlr4/.antlr/SysYLexer.java index 0771c1d..b888ca4 100644 --- a/src/antlr4/.antlr/SysYLexer.java +++ b/src/antlr4/.antlr/SysYLexer.java @@ -1,4 +1,4 @@ -// Generated from //wsl.localhost/Ubuntu/home/hw/nudt-compiler-cpp/src/antlr4/SysY.g4 by ANTLR 4.13.1 +// Generated from /root/sysy2026/nudt-compiler-cpp/src/antlr4/SysY.g4 by ANTLR 4.13.1 import org.antlr.v4.runtime.Lexer; import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.Token; diff --git a/src/antlr4/.antlr/SysYListener.java b/src/antlr4/.antlr/SysYListener.java index 1a424a3..8115100 100644 --- a/src/antlr4/.antlr/SysYListener.java +++ b/src/antlr4/.antlr/SysYListener.java @@ -1,4 +1,4 @@ -// Generated from //wsl.localhost/Ubuntu/home/hw/nudt-compiler-cpp/src/antlr4/SysY.g4 by ANTLR 4.13.1 +// Generated from /root/sysy2026/nudt-compiler-cpp/src/antlr4/SysY.g4 by ANTLR 4.13.1 import org.antlr.v4.runtime.tree.ParseTreeListener; /** @@ -27,15 +27,55 @@ public interface SysYListener extends ParseTreeListener { */ void exitDecl(SysYParser.DeclContext ctx); /** - * Enter a parse tree produced by {@link SysYParser#btype}. + * Enter a parse tree produced by {@link SysYParser#constDecl}. * @param ctx the parse tree */ - void enterBtype(SysYParser.BtypeContext ctx); + void enterConstDecl(SysYParser.ConstDeclContext ctx); /** - * Exit a parse tree produced by {@link SysYParser#btype}. + * Exit a parse tree produced by {@link SysYParser#constDecl}. * @param ctx the parse tree */ - void exitBtype(SysYParser.BtypeContext ctx); + void exitConstDecl(SysYParser.ConstDeclContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#bType}. + * @param ctx the parse tree + */ + void enterBType(SysYParser.BTypeContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#bType}. + * @param ctx the parse tree + */ + void exitBType(SysYParser.BTypeContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#constDef}. + * @param ctx the parse tree + */ + void enterConstDef(SysYParser.ConstDefContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#constDef}. + * @param ctx the parse tree + */ + void exitConstDef(SysYParser.ConstDefContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#constInitVal}. + * @param ctx the parse tree + */ + void enterConstInitVal(SysYParser.ConstInitValContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#constInitVal}. + * @param ctx the parse tree + */ + void exitConstInitVal(SysYParser.ConstInitValContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#varDecl}. + * @param ctx the parse tree + */ + void enterVarDecl(SysYParser.VarDeclContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#varDecl}. + * @param ctx the parse tree + */ + void exitVarDecl(SysYParser.VarDeclContext ctx); /** * Enter a parse tree produced by {@link SysYParser#varDef}. * @param ctx the parse tree @@ -47,15 +87,15 @@ public interface SysYListener extends ParseTreeListener { */ void exitVarDef(SysYParser.VarDefContext ctx); /** - * Enter a parse tree produced by {@link SysYParser#initValue}. + * Enter a parse tree produced by {@link SysYParser#initVal}. * @param ctx the parse tree */ - void enterInitValue(SysYParser.InitValueContext ctx); + void enterInitVal(SysYParser.InitValContext ctx); /** - * Exit a parse tree produced by {@link SysYParser#initValue}. + * Exit a parse tree produced by {@link SysYParser#initVal}. * @param ctx the parse tree */ - void exitInitValue(SysYParser.InitValueContext ctx); + void exitInitVal(SysYParser.InitValContext ctx); /** * Enter a parse tree produced by {@link SysYParser#funcDef}. * @param ctx the parse tree @@ -77,15 +117,35 @@ public interface SysYListener extends ParseTreeListener { */ void exitFuncType(SysYParser.FuncTypeContext ctx); /** - * Enter a parse tree produced by {@link SysYParser#blockStmt}. + * Enter a parse tree produced by {@link SysYParser#funcFParams}. * @param ctx the parse tree */ - void enterBlockStmt(SysYParser.BlockStmtContext ctx); + void enterFuncFParams(SysYParser.FuncFParamsContext ctx); /** - * Exit a parse tree produced by {@link SysYParser#blockStmt}. + * Exit a parse tree produced by {@link SysYParser#funcFParams}. * @param ctx the parse tree */ - void exitBlockStmt(SysYParser.BlockStmtContext ctx); + void exitFuncFParams(SysYParser.FuncFParamsContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#funcFParam}. + * @param ctx the parse tree + */ + void enterFuncFParam(SysYParser.FuncFParamContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#funcFParam}. + * @param ctx the parse tree + */ + void exitFuncFParam(SysYParser.FuncFParamContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#block}. + * @param ctx the parse tree + */ + void enterBlock(SysYParser.BlockContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#block}. + * @param ctx the parse tree + */ + void exitBlock(SysYParser.BlockContext ctx); /** * Enter a parse tree produced by {@link SysYParser#blockItem}. * @param ctx the parse tree @@ -97,93 +157,141 @@ public interface SysYListener extends ParseTreeListener { */ void exitBlockItem(SysYParser.BlockItemContext ctx); /** - * Enter a parse tree produced by {@link SysYParser#stmt}. + * Enter a parse tree produced by the {@code assignStmt} + * labeled alternative in {@link SysYParser#stmt}. * @param ctx the parse tree */ - void enterStmt(SysYParser.StmtContext ctx); + void enterAssignStmt(SysYParser.AssignStmtContext ctx); /** - * Exit a parse tree produced by {@link SysYParser#stmt}. + * Exit a parse tree produced by the {@code assignStmt} + * labeled alternative in {@link SysYParser#stmt}. * @param ctx the parse tree */ - void exitStmt(SysYParser.StmtContext ctx); + void exitAssignStmt(SysYParser.AssignStmtContext ctx); /** - * Enter a parse tree produced by {@link SysYParser#returnStmt}. + * Enter a parse tree produced by the {@code expStmt} + * labeled alternative in {@link SysYParser#stmt}. * @param ctx the parse tree */ - void enterReturnStmt(SysYParser.ReturnStmtContext ctx); + void enterExpStmt(SysYParser.ExpStmtContext ctx); /** - * Exit a parse tree produced by {@link SysYParser#returnStmt}. + * Exit a parse tree produced by the {@code expStmt} + * labeled alternative in {@link SysYParser#stmt}. * @param ctx the parse tree */ - void exitReturnStmt(SysYParser.ReturnStmtContext ctx); + void exitExpStmt(SysYParser.ExpStmtContext ctx); + /** + * Enter a parse tree produced by the {@code blockStmt} + * labeled alternative in {@link SysYParser#stmt}. + * @param ctx the parse tree + */ + void enterBlockStmt(SysYParser.BlockStmtContext ctx); /** - * Enter a parse tree produced by the {@code varExp} - * labeled alternative in {@link SysYParser#exp}. + * Exit a parse tree produced by the {@code blockStmt} + * labeled alternative in {@link SysYParser#stmt}. * @param ctx the parse tree */ - void enterVarExp(SysYParser.VarExpContext ctx); + void exitBlockStmt(SysYParser.BlockStmtContext ctx); + /** + * Enter a parse tree produced by the {@code ifStmt} + * labeled alternative in {@link SysYParser#stmt}. + * @param ctx the parse tree + */ + void enterIfStmt(SysYParser.IfStmtContext ctx); + /** + * Exit a parse tree produced by the {@code ifStmt} + * labeled alternative in {@link SysYParser#stmt}. + * @param ctx the parse tree + */ + void exitIfStmt(SysYParser.IfStmtContext ctx); + /** + * Enter a parse tree produced by the {@code whileStmt} + * labeled alternative in {@link SysYParser#stmt}. + * @param ctx the parse tree + */ + void enterWhileStmt(SysYParser.WhileStmtContext ctx); + /** + * Exit a parse tree produced by the {@code whileStmt} + * labeled alternative in {@link SysYParser#stmt}. + * @param ctx the parse tree + */ + void exitWhileStmt(SysYParser.WhileStmtContext ctx); + /** + * Enter a parse tree produced by the {@code breakStmt} + * labeled alternative in {@link SysYParser#stmt}. + * @param ctx the parse tree + */ + void enterBreakStmt(SysYParser.BreakStmtContext ctx); + /** + * Exit a parse tree produced by the {@code breakStmt} + * labeled alternative in {@link SysYParser#stmt}. + * @param ctx the parse tree + */ + void exitBreakStmt(SysYParser.BreakStmtContext ctx); + /** + * Enter a parse tree produced by the {@code continueStmt} + * labeled alternative in {@link SysYParser#stmt}. + * @param ctx the parse tree + */ + void enterContinueStmt(SysYParser.ContinueStmtContext ctx); /** - * Exit a parse tree produced by the {@code varExp} - * labeled alternative in {@link SysYParser#exp}. + * Exit a parse tree produced by the {@code continueStmt} + * labeled alternative in {@link SysYParser#stmt}. * @param ctx the parse tree */ - void exitVarExp(SysYParser.VarExpContext ctx); + void exitContinueStmt(SysYParser.ContinueStmtContext ctx); /** - * Enter a parse tree produced by the {@code numberExp} - * labeled alternative in {@link SysYParser#exp}. + * Enter a parse tree produced by the {@code returnStmt} + * labeled alternative in {@link SysYParser#stmt}. * @param ctx the parse tree */ - void enterNumberExp(SysYParser.NumberExpContext ctx); + void enterReturnStmt(SysYParser.ReturnStmtContext ctx); /** - * Exit a parse tree produced by the {@code numberExp} - * labeled alternative in {@link SysYParser#exp}. + * Exit a parse tree produced by the {@code returnStmt} + * labeled alternative in {@link SysYParser#stmt}. * @param ctx the parse tree */ - void exitNumberExp(SysYParser.NumberExpContext ctx); + void exitReturnStmt(SysYParser.ReturnStmtContext ctx); /** - * Enter a parse tree produced by the {@code parenExp} - * labeled alternative in {@link SysYParser#exp}. + * Enter a parse tree produced by {@link SysYParser#exp}. * @param ctx the parse tree */ - void enterParenExp(SysYParser.ParenExpContext ctx); + void enterExp(SysYParser.ExpContext ctx); /** - * Exit a parse tree produced by the {@code parenExp} - * labeled alternative in {@link SysYParser#exp}. + * Exit a parse tree produced by {@link SysYParser#exp}. * @param ctx the parse tree */ - void exitParenExp(SysYParser.ParenExpContext ctx); + void exitExp(SysYParser.ExpContext ctx); /** - * Enter a parse tree produced by the {@code additiveExp} - * labeled alternative in {@link SysYParser#exp}. + * Enter a parse tree produced by {@link SysYParser#cond}. * @param ctx the parse tree */ - void enterAdditiveExp(SysYParser.AdditiveExpContext ctx); + void enterCond(SysYParser.CondContext ctx); /** - * Exit a parse tree produced by the {@code additiveExp} - * labeled alternative in {@link SysYParser#exp}. + * Exit a parse tree produced by {@link SysYParser#cond}. * @param ctx the parse tree */ - void exitAdditiveExp(SysYParser.AdditiveExpContext ctx); + void exitCond(SysYParser.CondContext ctx); /** - * Enter a parse tree produced by {@link SysYParser#var}. + * Enter a parse tree produced by {@link SysYParser#lVal}. * @param ctx the parse tree */ - void enterVar(SysYParser.VarContext ctx); + void enterLVal(SysYParser.LValContext ctx); /** - * Exit a parse tree produced by {@link SysYParser#var}. + * Exit a parse tree produced by {@link SysYParser#lVal}. * @param ctx the parse tree */ - void exitVar(SysYParser.VarContext ctx); + void exitLVal(SysYParser.LValContext ctx); /** - * Enter a parse tree produced by {@link SysYParser#lValue}. + * Enter a parse tree produced by {@link SysYParser#primaryExp}. * @param ctx the parse tree */ - void enterLValue(SysYParser.LValueContext ctx); + void enterPrimaryExp(SysYParser.PrimaryExpContext ctx); /** - * Exit a parse tree produced by {@link SysYParser#lValue}. + * Exit a parse tree produced by {@link SysYParser#primaryExp}. * @param ctx the parse tree */ - void exitLValue(SysYParser.LValueContext ctx); + void exitPrimaryExp(SysYParser.PrimaryExpContext ctx); /** * Enter a parse tree produced by {@link SysYParser#number}. * @param ctx the parse tree @@ -194,4 +302,214 @@ public interface SysYListener extends ParseTreeListener { * @param ctx the parse tree */ void exitNumber(SysYParser.NumberContext ctx); + /** + * Enter a parse tree produced by the {@code primaryUnaryExp} + * labeled alternative in {@link SysYParser#unaryExp}. + * @param ctx the parse tree + */ + void enterPrimaryUnaryExp(SysYParser.PrimaryUnaryExpContext ctx); + /** + * Exit a parse tree produced by the {@code primaryUnaryExp} + * labeled alternative in {@link SysYParser#unaryExp}. + * @param ctx the parse tree + */ + void exitPrimaryUnaryExp(SysYParser.PrimaryUnaryExpContext ctx); + /** + * Enter a parse tree produced by the {@code callUnaryExp} + * labeled alternative in {@link SysYParser#unaryExp}. + * @param ctx the parse tree + */ + void enterCallUnaryExp(SysYParser.CallUnaryExpContext ctx); + /** + * Exit a parse tree produced by the {@code callUnaryExp} + * labeled alternative in {@link SysYParser#unaryExp}. + * @param ctx the parse tree + */ + void exitCallUnaryExp(SysYParser.CallUnaryExpContext ctx); + /** + * Enter a parse tree produced by the {@code opUnaryExp} + * labeled alternative in {@link SysYParser#unaryExp}. + * @param ctx the parse tree + */ + void enterOpUnaryExp(SysYParser.OpUnaryExpContext ctx); + /** + * Exit a parse tree produced by the {@code opUnaryExp} + * labeled alternative in {@link SysYParser#unaryExp}. + * @param ctx the parse tree + */ + void exitOpUnaryExp(SysYParser.OpUnaryExpContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#unaryOp}. + * @param ctx the parse tree + */ + void enterUnaryOp(SysYParser.UnaryOpContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#unaryOp}. + * @param ctx the parse tree + */ + void exitUnaryOp(SysYParser.UnaryOpContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#funcRParams}. + * @param ctx the parse tree + */ + void enterFuncRParams(SysYParser.FuncRParamsContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#funcRParams}. + * @param ctx the parse tree + */ + void exitFuncRParams(SysYParser.FuncRParamsContext ctx); + /** + * Enter a parse tree produced by the {@code binaryMulExp} + * labeled alternative in {@link SysYParser#mulExp}. + * @param ctx the parse tree + */ + void enterBinaryMulExp(SysYParser.BinaryMulExpContext ctx); + /** + * Exit a parse tree produced by the {@code binaryMulExp} + * labeled alternative in {@link SysYParser#mulExp}. + * @param ctx the parse tree + */ + void exitBinaryMulExp(SysYParser.BinaryMulExpContext ctx); + /** + * Enter a parse tree produced by the {@code unaryMulExp} + * labeled alternative in {@link SysYParser#mulExp}. + * @param ctx the parse tree + */ + void enterUnaryMulExp(SysYParser.UnaryMulExpContext ctx); + /** + * Exit a parse tree produced by the {@code unaryMulExp} + * labeled alternative in {@link SysYParser#mulExp}. + * @param ctx the parse tree + */ + void exitUnaryMulExp(SysYParser.UnaryMulExpContext ctx); + /** + * Enter a parse tree produced by the {@code binaryAddExp} + * labeled alternative in {@link SysYParser#addExp}. + * @param ctx the parse tree + */ + void enterBinaryAddExp(SysYParser.BinaryAddExpContext ctx); + /** + * Exit a parse tree produced by the {@code binaryAddExp} + * labeled alternative in {@link SysYParser#addExp}. + * @param ctx the parse tree + */ + void exitBinaryAddExp(SysYParser.BinaryAddExpContext ctx); + /** + * Enter a parse tree produced by the {@code mulAddExp} + * labeled alternative in {@link SysYParser#addExp}. + * @param ctx the parse tree + */ + void enterMulAddExp(SysYParser.MulAddExpContext ctx); + /** + * Exit a parse tree produced by the {@code mulAddExp} + * labeled alternative in {@link SysYParser#addExp}. + * @param ctx the parse tree + */ + void exitMulAddExp(SysYParser.MulAddExpContext ctx); + /** + * Enter a parse tree produced by the {@code addRelExp} + * labeled alternative in {@link SysYParser#relExp}. + * @param ctx the parse tree + */ + void enterAddRelExp(SysYParser.AddRelExpContext ctx); + /** + * Exit a parse tree produced by the {@code addRelExp} + * labeled alternative in {@link SysYParser#relExp}. + * @param ctx the parse tree + */ + void exitAddRelExp(SysYParser.AddRelExpContext ctx); + /** + * Enter a parse tree produced by the {@code binaryRelExp} + * labeled alternative in {@link SysYParser#relExp}. + * @param ctx the parse tree + */ + void enterBinaryRelExp(SysYParser.BinaryRelExpContext ctx); + /** + * Exit a parse tree produced by the {@code binaryRelExp} + * labeled alternative in {@link SysYParser#relExp}. + * @param ctx the parse tree + */ + void exitBinaryRelExp(SysYParser.BinaryRelExpContext ctx); + /** + * Enter a parse tree produced by the {@code binaryEqExp} + * labeled alternative in {@link SysYParser#eqExp}. + * @param ctx the parse tree + */ + void enterBinaryEqExp(SysYParser.BinaryEqExpContext ctx); + /** + * Exit a parse tree produced by the {@code binaryEqExp} + * labeled alternative in {@link SysYParser#eqExp}. + * @param ctx the parse tree + */ + void exitBinaryEqExp(SysYParser.BinaryEqExpContext ctx); + /** + * Enter a parse tree produced by the {@code relEqExp} + * labeled alternative in {@link SysYParser#eqExp}. + * @param ctx the parse tree + */ + void enterRelEqExp(SysYParser.RelEqExpContext ctx); + /** + * Exit a parse tree produced by the {@code relEqExp} + * labeled alternative in {@link SysYParser#eqExp}. + * @param ctx the parse tree + */ + void exitRelEqExp(SysYParser.RelEqExpContext ctx); + /** + * Enter a parse tree produced by the {@code eqLAndExp} + * labeled alternative in {@link SysYParser#lAndExp}. + * @param ctx the parse tree + */ + void enterEqLAndExp(SysYParser.EqLAndExpContext ctx); + /** + * Exit a parse tree produced by the {@code eqLAndExp} + * labeled alternative in {@link SysYParser#lAndExp}. + * @param ctx the parse tree + */ + void exitEqLAndExp(SysYParser.EqLAndExpContext ctx); + /** + * Enter a parse tree produced by the {@code binaryLAndExp} + * labeled alternative in {@link SysYParser#lAndExp}. + * @param ctx the parse tree + */ + void enterBinaryLAndExp(SysYParser.BinaryLAndExpContext ctx); + /** + * Exit a parse tree produced by the {@code binaryLAndExp} + * labeled alternative in {@link SysYParser#lAndExp}. + * @param ctx the parse tree + */ + void exitBinaryLAndExp(SysYParser.BinaryLAndExpContext ctx); + /** + * Enter a parse tree produced by the {@code andLOrExp} + * labeled alternative in {@link SysYParser#lOrExp}. + * @param ctx the parse tree + */ + void enterAndLOrExp(SysYParser.AndLOrExpContext ctx); + /** + * Exit a parse tree produced by the {@code andLOrExp} + * labeled alternative in {@link SysYParser#lOrExp}. + * @param ctx the parse tree + */ + void exitAndLOrExp(SysYParser.AndLOrExpContext ctx); + /** + * Enter a parse tree produced by the {@code binaryLOrExp} + * labeled alternative in {@link SysYParser#lOrExp}. + * @param ctx the parse tree + */ + void enterBinaryLOrExp(SysYParser.BinaryLOrExpContext ctx); + /** + * Exit a parse tree produced by the {@code binaryLOrExp} + * labeled alternative in {@link SysYParser#lOrExp}. + * @param ctx the parse tree + */ + void exitBinaryLOrExp(SysYParser.BinaryLOrExpContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#constExp}. + * @param ctx the parse tree + */ + void enterConstExp(SysYParser.ConstExpContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#constExp}. + * @param ctx the parse tree + */ + void exitConstExp(SysYParser.ConstExpContext ctx); } \ No newline at end of file diff --git a/src/antlr4/.antlr/SysYParser.java b/src/antlr4/.antlr/SysYParser.java index 3a9d450..fbba926 100644 --- a/src/antlr4/.antlr/SysYParser.java +++ b/src/antlr4/.antlr/SysYParser.java @@ -1,4 +1,4 @@ -// Generated from //wsl.localhost/Ubuntu/home/hw/nudt-compiler-cpp/src/antlr4/SysY.g4 by ANTLR 4.13.1 +// Generated from /root/sysy2026/nudt-compiler-cpp/src/antlr4/SysY.g4 by ANTLR 4.13.1 import org.antlr.v4.runtime.atn.*; import org.antlr.v4.runtime.dfa.DFA; import org.antlr.v4.runtime.*; @@ -129,6 +129,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_compUnit; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterCompUnit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitCompUnit(this); + } } public final CompUnitContext compUnit() throws RecognitionException { @@ -191,6 +199,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_decl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitDecl(this); + } } public final DeclContext decl() throws RecognitionException { @@ -251,6 +267,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_constDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterConstDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitConstDecl(this); + } } public final ConstDeclContext constDecl() throws RecognitionException { @@ -305,6 +329,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_bType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterBType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitBType(this); + } } public final BTypeContext bType() throws RecognitionException { @@ -362,6 +394,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_constDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterConstDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitConstDef(this); + } } public final ConstDefContext constDef() throws RecognitionException { @@ -429,6 +469,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_constInitVal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterConstInitVal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitConstInitVal(this); + } } public final ConstInitValContext constInitVal() throws RecognitionException { @@ -522,6 +570,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_varDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterVarDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitVarDecl(this); + } } public final VarDeclContext varDecl() throws RecognitionException { @@ -591,6 +647,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_varDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterVarDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitVarDef(this); + } } public final VarDefContext varDef() throws RecognitionException { @@ -689,6 +753,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_initVal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterInitVal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitInitVal(this); + } } public final InitValContext initVal() throws RecognitionException { @@ -780,6 +852,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_funcDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterFuncDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitFuncDef(this); + } } public final FuncDefContext funcDef() throws RecognitionException { @@ -831,6 +911,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_funcType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterFuncType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitFuncType(this); + } } public final FuncTypeContext funcType() throws RecognitionException { @@ -879,6 +967,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_funcFParams; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterFuncFParams(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitFuncFParams(this); + } } public final FuncFParamsContext funcFParams() throws RecognitionException { @@ -943,6 +1039,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_funcFParam; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterFuncFParam(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitFuncFParam(this); + } } public final FuncFParamContext funcFParam() throws RecognitionException { @@ -1020,6 +1124,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_block; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterBlock(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitBlock(this); + } } public final BlockContext block() throws RecognitionException { @@ -1072,6 +1184,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_blockItem; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterBlockItem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitBlockItem(this); + } } public final BlockItemContext blockItem() throws RecognitionException { @@ -1149,6 +1269,14 @@ public class SysYParser extends Parser { return getRuleContext(StmtContext.class,0); } public WhileStmtContext(StmtContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterWhileStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitWhileStmt(this); + } } @SuppressWarnings("CheckReturnValue") public static class IfStmtContext extends StmtContext { @@ -1166,6 +1294,14 @@ public class SysYParser extends Parser { } public TerminalNode ELSE() { return getToken(SysYParser.ELSE, 0); } public IfStmtContext(StmtContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterIfStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitIfStmt(this); + } } @SuppressWarnings("CheckReturnValue") public static class BlockStmtContext extends StmtContext { @@ -1173,6 +1309,14 @@ public class SysYParser extends Parser { return getRuleContext(BlockContext.class,0); } public BlockStmtContext(StmtContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterBlockStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitBlockStmt(this); + } } @SuppressWarnings("CheckReturnValue") public static class AssignStmtContext extends StmtContext { @@ -1185,12 +1329,28 @@ public class SysYParser extends Parser { } public TerminalNode SEMI() { return getToken(SysYParser.SEMI, 0); } public AssignStmtContext(StmtContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterAssignStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitAssignStmt(this); + } } @SuppressWarnings("CheckReturnValue") public static class BreakStmtContext extends StmtContext { public TerminalNode BREAK() { return getToken(SysYParser.BREAK, 0); } public TerminalNode SEMI() { return getToken(SysYParser.SEMI, 0); } public BreakStmtContext(StmtContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterBreakStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitBreakStmt(this); + } } @SuppressWarnings("CheckReturnValue") public static class ExpStmtContext extends StmtContext { @@ -1199,6 +1359,14 @@ public class SysYParser extends Parser { return getRuleContext(ExpContext.class,0); } public ExpStmtContext(StmtContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterExpStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitExpStmt(this); + } } @SuppressWarnings("CheckReturnValue") public static class ReturnStmtContext extends StmtContext { @@ -1208,12 +1376,28 @@ public class SysYParser extends Parser { return getRuleContext(ExpContext.class,0); } public ReturnStmtContext(StmtContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterReturnStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitReturnStmt(this); + } } @SuppressWarnings("CheckReturnValue") public static class ContinueStmtContext extends StmtContext { public TerminalNode CONTINUE() { return getToken(SysYParser.CONTINUE, 0); } public TerminalNode SEMI() { return getToken(SysYParser.SEMI, 0); } public ContinueStmtContext(StmtContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterContinueStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitContinueStmt(this); + } } public final StmtContext stmt() throws RecognitionException { @@ -1370,6 +1554,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_exp; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitExp(this); + } } public final ExpContext exp() throws RecognitionException { @@ -1402,6 +1594,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_cond; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterCond(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitCond(this); + } } public final CondContext cond() throws RecognitionException { @@ -1446,6 +1646,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_lVal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterLVal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitLVal(this); + } } public final LValContext lVal() throws RecognitionException { @@ -1507,6 +1715,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_primaryExp; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterPrimaryExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitPrimaryExp(this); + } } public final PrimaryExpContext primaryExp() throws RecognitionException { @@ -1565,6 +1781,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_number; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterNumber(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitNumber(this); + } } public final NumberContext number() throws RecognitionException { @@ -1618,6 +1842,14 @@ public class SysYParser extends Parser { return getRuleContext(UnaryExpContext.class,0); } public OpUnaryExpContext(UnaryExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterOpUnaryExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitOpUnaryExp(this); + } } @SuppressWarnings("CheckReturnValue") public static class CallUnaryExpContext extends UnaryExpContext { @@ -1628,6 +1860,14 @@ public class SysYParser extends Parser { return getRuleContext(FuncRParamsContext.class,0); } public CallUnaryExpContext(UnaryExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterCallUnaryExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitCallUnaryExp(this); + } } @SuppressWarnings("CheckReturnValue") public static class PrimaryUnaryExpContext extends UnaryExpContext { @@ -1635,6 +1875,14 @@ public class SysYParser extends Parser { return getRuleContext(PrimaryExpContext.class,0); } public PrimaryUnaryExpContext(UnaryExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterPrimaryUnaryExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitPrimaryUnaryExp(this); + } } public final UnaryExpContext unaryExp() throws RecognitionException { @@ -1707,6 +1955,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_unaryOp; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterUnaryOp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitUnaryOp(this); + } } public final UnaryOpContext unaryOp() throws RecognitionException { @@ -1755,6 +2011,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_funcRParams; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterFuncRParams(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitFuncRParams(this); + } } public final FuncRParamsContext funcRParams() throws RecognitionException { @@ -1820,6 +2084,14 @@ public class SysYParser extends Parser { public TerminalNode DIV() { return getToken(SysYParser.DIV, 0); } public TerminalNode MOD() { return getToken(SysYParser.MOD, 0); } public BinaryMulExpContext(MulExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterBinaryMulExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitBinaryMulExp(this); + } } @SuppressWarnings("CheckReturnValue") public static class UnaryMulExpContext extends MulExpContext { @@ -1827,6 +2099,14 @@ public class SysYParser extends Parser { return getRuleContext(UnaryExpContext.class,0); } public UnaryMulExpContext(MulExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterUnaryMulExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitUnaryMulExp(this); + } } public final MulExpContext mulExp() throws RecognitionException { @@ -1924,6 +2204,14 @@ public class SysYParser extends Parser { public TerminalNode ADD() { return getToken(SysYParser.ADD, 0); } public TerminalNode SUB() { return getToken(SysYParser.SUB, 0); } public BinaryAddExpContext(AddExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterBinaryAddExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitBinaryAddExp(this); + } } @SuppressWarnings("CheckReturnValue") public static class MulAddExpContext extends AddExpContext { @@ -1931,6 +2219,14 @@ public class SysYParser extends Parser { return getRuleContext(MulExpContext.class,0); } public MulAddExpContext(AddExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterMulAddExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitMulAddExp(this); + } } public final AddExpContext addExp() throws RecognitionException { @@ -2022,6 +2318,14 @@ public class SysYParser extends Parser { return getRuleContext(AddExpContext.class,0); } public AddRelExpContext(RelExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterAddRelExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitAddRelExp(this); + } } @SuppressWarnings("CheckReturnValue") public static class BinaryRelExpContext extends RelExpContext { @@ -2037,6 +2341,14 @@ public class SysYParser extends Parser { public TerminalNode LE() { return getToken(SysYParser.LE, 0); } public TerminalNode GE() { return getToken(SysYParser.GE, 0); } public BinaryRelExpContext(RelExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterBinaryRelExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitBinaryRelExp(this); + } } public final RelExpContext relExp() throws RecognitionException { @@ -2134,6 +2446,14 @@ public class SysYParser extends Parser { public TerminalNode EQ() { return getToken(SysYParser.EQ, 0); } public TerminalNode NE() { return getToken(SysYParser.NE, 0); } public BinaryEqExpContext(EqExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterBinaryEqExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitBinaryEqExp(this); + } } @SuppressWarnings("CheckReturnValue") public static class RelEqExpContext extends EqExpContext { @@ -2141,6 +2461,14 @@ public class SysYParser extends Parser { return getRuleContext(RelExpContext.class,0); } public RelEqExpContext(EqExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterRelEqExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitRelEqExp(this); + } } public final EqExpContext eqExp() throws RecognitionException { @@ -2232,6 +2560,14 @@ public class SysYParser extends Parser { return getRuleContext(EqExpContext.class,0); } public EqLAndExpContext(LAndExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterEqLAndExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitEqLAndExp(this); + } } @SuppressWarnings("CheckReturnValue") public static class BinaryLAndExpContext extends LAndExpContext { @@ -2243,6 +2579,14 @@ public class SysYParser extends Parser { return getRuleContext(EqExpContext.class,0); } public BinaryLAndExpContext(LAndExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterBinaryLAndExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitBinaryLAndExp(this); + } } public final LAndExpContext lAndExp() throws RecognitionException { @@ -2324,6 +2668,14 @@ public class SysYParser extends Parser { return getRuleContext(LAndExpContext.class,0); } public AndLOrExpContext(LOrExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterAndLOrExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitAndLOrExp(this); + } } @SuppressWarnings("CheckReturnValue") public static class BinaryLOrExpContext extends LOrExpContext { @@ -2335,6 +2687,14 @@ public class SysYParser extends Parser { return getRuleContext(LAndExpContext.class,0); } public BinaryLOrExpContext(LOrExpContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterBinaryLOrExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitBinaryLOrExp(this); + } } public final LOrExpContext lOrExp() throws RecognitionException { @@ -2407,6 +2767,14 @@ public class SysYParser extends Parser { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_constExp; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).enterConstExp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof SysYListener ) ((SysYListener)listener).exitConstExp(this); + } } public final ConstExpContext constExp() throws RecognitionException {