compUnit |-- funcDef | |-- funcType | | `-- Int: int | |-- Ident: main | |-- L_PAREN: ( | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- 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 | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 5 | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | |-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: a | | | |-- DivOp: / | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: b | | `-- Semi: ; | `-- R_BRACE: } `-- EOF: