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: