compUnit |-- decl | `-- varDecl | |-- bType | | `-- Int: int | |-- varDef | | |-- Ident: a | | |-- L_BRACKET: [ | | |-- constExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 4096 | | `-- R_BRACKET: ] | `-- Semi: ; |-- funcDef | |-- funcType | | `-- Int: int | |-- Ident: f1 | |-- L_PAREN: ( | |-- funcFParams | | `-- funcFParam | | |-- bType | | | `-- Int: int | | |-- Ident: b | | |-- L_BRACKET: [ | | `-- R_BRACKET: ] | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- stmt | | |-- lVal | | | |-- Ident: a | | | |-- L_BRACKET: [ | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 5 | | | `-- R_BRACKET: ] | | |-- Assign: = | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 4000 | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- lVal | | | |-- Ident: a | | | |-- L_BRACKET: [ | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 4000 | | | `-- R_BRACKET: ] | | |-- Assign: = | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 3 | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- lVal | | | |-- Ident: a | | | |-- L_BRACKET: [ | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 4095 | | | `-- R_BRACKET: ] | | |-- Assign: = | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 7 | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- lVal | | | |-- Ident: b | | | |-- L_BRACKET: [ | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | |-- Ident: a | | | | |-- L_BRACKET: [ | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 4095 | | | | `-- R_BRACKET: ] | | | `-- R_BRACKET: ] | | |-- Assign: = | | |-- exp | | | `-- addExp | | | |-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | |-- Ident: a | | | | |-- L_BRACKET: [ | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 2216 | | | | `-- R_BRACKET: ] | | | |-- AddOp: + | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 9 | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | |-- Ident: a | | | |-- L_BRACKET: [ | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | |-- Ident: a | | | | |-- L_BRACKET: [ | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 5 | | | | `-- R_BRACKET: ] | | | `-- R_BRACKET: ] | | `-- Semi: ; | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Int: int | |-- Ident: main | |-- L_PAREN: ( | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Int: int | | |-- varDef | | | |-- Ident: b | | | |-- L_BRACKET: [ | | | |-- constExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 4 | | | |-- R_BRACKET: ] | | | |-- L_BRACKET: [ | | | |-- constExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 1024 | | | |-- R_BRACKET: ] | | | |-- Assign: = | | | `-- initVal | | | |-- L_BRACE: { | | | |-- initVal | | | | |-- L_BRACE: { | | | | `-- R_BRACE: } | | | |-- Comma: , | | | |-- initVal | | | | |-- L_BRACE: { | | | | |-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 1 | | | | `-- R_BRACE: } | | | |-- Comma: , | | | |-- initVal | | | | |-- L_BRACE: { | | | | |-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 2 | | | | |-- Comma: , | | | | |-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 3 | | | | `-- R_BRACE: } | | | |-- Comma: , | | | |-- initVal | | | | |-- L_BRACE: { | | | | |-- 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 | | | | `-- R_BRACE: } | | | `-- R_BRACE: } | | `-- Semi: ; | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Int: int | | |-- varDef | | | |-- Ident: c | | | |-- L_BRACKET: [ | | | |-- constExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 1024 | | | |-- R_BRACKET: ] | | | |-- L_BRACKET: [ | | | |-- constExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 4 | | | |-- R_BRACKET: ] | | | |-- Assign: = | | | `-- initVal | | | |-- L_BRACE: { | | | |-- initVal | | | | |-- L_BRACE: { | | | | |-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 1 | | | | |-- Comma: , | | | | |-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 2 | | | | `-- R_BRACE: } | | | |-- Comma: , | | | |-- initVal | | | | |-- L_BRACE: { | | | | |-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 3 | | | | |-- Comma: , | | | | |-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 4 | | | | `-- R_BRACE: } | | | `-- R_BRACE: } | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putint | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: f1 | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | |-- Ident: c | | | | | |-- L_BRACKET: [ | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 0 | | | | | `-- R_BRACKET: ] | | | | `-- R_PAREN: ) | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 10 | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | |-- Ident: c | | | |-- L_BRACKET: [ | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 2 | | | |-- R_BRACKET: ] | | | |-- L_BRACKET: [ | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 0 | | | `-- R_BRACKET: ] | | `-- Semi: ; | `-- R_BRACE: } `-- EOF: