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: