compUnit |-- decl | `-- constDecl | |-- Const: const | |-- bType | | `-- Int: int | |-- constDef | | |-- Ident: W | | |-- Assign: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- IntConst: 12 | |-- Comma: , | |-- constDef | | |-- Ident: H | | |-- Assign: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- IntConst: 12 | |-- Comma: , | |-- constDef | | |-- Ident: N | | |-- Assign: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- IntConst: 24 | `-- Semi: ; |-- decl | `-- constDecl | |-- Const: const | |-- bType | | `-- Float: float | |-- constDef | | |-- Ident: PI | | |-- Assign: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- FloatConst: 3.14159265359 | |-- Comma: , | |-- constDef | | |-- Ident: TWO_PI | | |-- Assign: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- FloatConst: 6.28318530718 | `-- Semi: ; |-- decl | `-- constDecl | |-- Const: const | |-- bType | | `-- Int: int | |-- constDef | | |-- Ident: MAX_STEP | | |-- Assign: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- IntConst: 10 | `-- Semi: ; |-- decl | `-- constDecl | |-- Const: const | |-- bType | | `-- Float: float | |-- constDef | | |-- Ident: MAX_DISTANCE | | |-- Assign: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- FloatConst: 2.0 | `-- Semi: ; |-- decl | `-- constDecl | |-- Const: const | |-- bType | | `-- Float: float | |-- constDef | | |-- Ident: EPSILON | | |-- Assign: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- FloatConst: 1e-6 | `-- Semi: ; |-- decl | `-- constDecl | |-- Const: const | |-- bType | | `-- Int: int | |-- constDef | | |-- Ident: RAND_MAX | | |-- Assign: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | |-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 100000007 | | |-- SubOp: - | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- IntConst: 1 | `-- Semi: ; |-- decl | `-- varDecl | |-- bType | | `-- Int: int | |-- varDef | | |-- Ident: seed | | |-- Assign: = | | `-- initVal | | `-- exp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- IntConst: 0 | `-- Semi: ; |-- funcDef | |-- funcType | | `-- Int: int | |-- Ident: rand | |-- L_PAREN: ( | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- stmt | | |-- lVal | | | `-- Ident: seed | | |-- Assign: = | | |-- exp | | | `-- addExp | | | `-- mulExp | | | |-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | |-- L_PAREN: ( | | | | |-- exp | | | | | `-- addExp | | | | | |-- addExp | | | | | | `-- mulExp | | | | | | |-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: seed | | | | | | |-- MulOp: * | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 19980130 | | | | | |-- AddOp: + | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 23333 | | | | `-- R_PAREN: ) | | | |-- ModOp: % | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 100000007 | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- If: if | | |-- L_PAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: seed | | | |-- LtOp: < | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 0 | | |-- R_PAREN: ) | | `-- stmt | | |-- lVal | | | `-- Ident: seed | | |-- Assign: = | | |-- exp | | | `-- addExp | | | |-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: seed | | | |-- AddOp: + | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 100000007 | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: seed | | `-- Semi: ; | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Float: float | |-- Ident: my_fabs | |-- L_PAREN: ( | |-- funcFParams | | `-- funcFParam | | |-- bType | | | `-- Float: float | | `-- Ident: x | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- stmt | | |-- If: if | | |-- L_PAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: x | | | |-- GtOp: > | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 0 | | |-- R_PAREN: ) | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: x | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- unaryOp | | | | `-- SubOp: - | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: x | | `-- Semi: ; | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Float: float | |-- Ident: my_sqrt | |-- L_PAREN: ( | |-- funcFParams | | `-- funcFParam | | |-- bType | | | `-- Float: float | | `-- Ident: x | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Float: float | | |-- varDef | | | |-- Ident: t | | | |-- Assign: = | | | `-- initVal | | | `-- exp | | | `-- addExp | | | |-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | |-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: x | | | | | |-- DivOp: / | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 8 | | | | |-- AddOp: + | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- FloatConst: 0.5 | | | |-- AddOp: + | | | `-- mulExp | | | |-- mulExp | | | | |-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 2 | | | | |-- MulOp: * | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: x | | | |-- DivOp: / | | | `-- unaryExp | | | `-- primaryExp | | | |-- L_PAREN: ( | | | |-- exp | | | | `-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 4 | | | | |-- AddOp: + | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: x | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Int: int | | |-- varDef | | | |-- Ident: c | | | |-- Assign: = | | | `-- initVal | | | `-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 10 | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- While: while | | |-- L_PAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: c | | |-- R_PAREN: ) | | `-- stmt | | `-- block | | |-- L_BRACE: { | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | `-- Ident: t | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | |-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | |-- L_PAREN: ( | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: t | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | |-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: x | | | | | | |-- DivOp: / | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: t | | | | | `-- R_PAREN: ) | | | | |-- DivOp: / | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 2 | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | `-- Ident: c | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: c | | | | |-- SubOp: - | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 1 | | | `-- Semi: ; | | `-- R_BRACE: } | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: t | | `-- Semi: ; | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Float: float | |-- Ident: p | |-- L_PAREN: ( | |-- funcFParams | | `-- funcFParam | | |-- bType | | | `-- Float: float | | `-- Ident: x | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | |-- addExp | | | | `-- mulExp | | | | |-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 3 | | | | |-- MulOp: * | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: x | | | |-- SubOp: - | | | `-- mulExp | | | |-- mulExp | | | | |-- mulExp | | | | | |-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 4 | | | | | |-- MulOp: * | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: x | | | | |-- MulOp: * | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: x | | | |-- MulOp: * | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: x | | `-- Semi: ; | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Float: float | |-- Ident: my_sin_impl | |-- L_PAREN: ( | |-- funcFParams | | `-- funcFParam | | |-- bType | | | `-- Float: float | | `-- Ident: x | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- stmt | | |-- If: if | | |-- L_PAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: my_fabs | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: x | | | | `-- R_PAREN: ) | | | |-- LeOp: <= | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: EPSILON | | |-- R_PAREN: ) | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: x | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: p | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: my_sin_impl | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | |-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: x | | | | | |-- DivOp: / | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- FloatConst: 3.0 | | | | `-- R_PAREN: ) | | | `-- R_PAREN: ) | | `-- Semi: ; | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Float: float | |-- Ident: my_sin | |-- L_PAREN: ( | |-- funcFParams | | `-- funcFParam | | |-- bType | | | `-- Float: float | | `-- Ident: x | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- stmt | | |-- If: if | | |-- L_PAREN: ( | | |-- cond | | | `-- lOrExp | | | |-- lOrExp | | | | `-- lAndExp | | | | `-- eqExp | | | | `-- relExp | | | | |-- relExp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: x | | | | |-- GtOp: > | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: TWO_PI | | | |-- OrOp: || | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: x | | | |-- LtOp: < | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- unaryOp | | | | `-- SubOp: - | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: TWO_PI | | |-- R_PAREN: ) | | `-- stmt | | `-- block | | |-- L_BRACE: { | | |-- blockItem | | | `-- decl | | | `-- varDecl | | | |-- bType | | | | `-- Int: int | | | |-- varDef | | | | |-- Ident: xx | | | | |-- Assign: = | | | | `-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | |-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: x | | | | |-- DivOp: / | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: TWO_PI | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | `-- Ident: x | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: x | | | | |-- SubOp: - | | | | `-- mulExp | | | | |-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: xx | | | | |-- MulOp: * | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: TWO_PI | | | `-- Semi: ; | | `-- R_BRACE: } | |-- blockItem | | `-- stmt | | |-- If: if | | |-- L_PAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: x | | | |-- GtOp: > | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: PI | | |-- R_PAREN: ) | | `-- stmt | | |-- lVal | | | `-- Ident: x | | |-- Assign: = | | |-- exp | | | `-- addExp | | | |-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: x | | | |-- SubOp: - | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: TWO_PI | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- If: if | | |-- L_PAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: x | | | |-- LtOp: < | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- unaryOp | | | | `-- SubOp: - | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: PI | | |-- R_PAREN: ) | | `-- stmt | | |-- lVal | | | `-- Ident: x | | |-- Assign: = | | |-- exp | | | `-- addExp | | | |-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: x | | | |-- AddOp: + | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: TWO_PI | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: my_sin_impl | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: x | | | `-- R_PAREN: ) | | `-- Semi: ; | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Float: float | |-- Ident: my_cos | |-- L_PAREN: ( | |-- funcFParams | | `-- funcFParam | | |-- bType | | | `-- Float: float | | `-- Ident: x | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: my_sin | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: x | | | | |-- AddOp: + | | | | `-- mulExp | | | | |-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: PI | | | | |-- DivOp: / | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 2 | | | `-- R_PAREN: ) | | `-- Semi: ; | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Float: float | |-- Ident: circle_sdf | |-- L_PAREN: ( | |-- funcFParams | | |-- funcFParam | | | |-- bType | | | | `-- Float: float | | | `-- Ident: x | | |-- Comma: , | | |-- funcFParam | | | |-- bType | | | | `-- Float: float | | | `-- Ident: y | | |-- Comma: , | | |-- funcFParam | | | |-- bType | | | | `-- Float: float | | | `-- Ident: cx | | |-- Comma: , | | |-- funcFParam | | | |-- bType | | | | `-- Float: float | | | `-- Ident: cy | | |-- Comma: , | | `-- funcFParam | | |-- bType | | | `-- Float: float | | `-- Ident: r | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Float: float | | |-- varDef | | | |-- Ident: ux | | | |-- Assign: = | | | `-- initVal | | | `-- exp | | | `-- addExp | | | |-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: x | | | |-- SubOp: - | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: cx | | |-- Comma: , | | |-- varDef | | | |-- Ident: uy | | | |-- Assign: = | | | `-- initVal | | | `-- exp | | | `-- addExp | | | |-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: y | | | |-- SubOp: - | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: cy | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | |-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: my_sqrt | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | |-- addExp | | | | | | `-- mulExp | | | | | | |-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: ux | | | | | | |-- MulOp: * | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: ux | | | | | |-- AddOp: + | | | | | `-- mulExp | | | | | |-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: uy | | | | | |-- MulOp: * | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: uy | | | | `-- R_PAREN: ) | | | |-- SubOp: - | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: r | | `-- Semi: ; | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Void: void | |-- Ident: scene | |-- L_PAREN: ( | |-- funcFParams | | |-- funcFParam | | | |-- bType | | | | `-- Float: float | | | `-- Ident: x | | |-- Comma: , | | |-- funcFParam | | | |-- bType | | | | `-- Float: float | | | `-- Ident: y | | |-- Comma: , | | `-- funcFParam | | |-- bType | | | `-- Float: float | | |-- Ident: ret | | |-- L_BRACKET: [ | | `-- R_BRACKET: ] | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Float: float | | |-- varDef | | | |-- Ident: sd0 | | | |-- Assign: = | | | `-- initVal | | | `-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: circle_sdf | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: x | | | | |-- Comma: , | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: y | | | | |-- Comma: , | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- FloatConst: 0.4 | | | | |-- Comma: , | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- FloatConst: 0.4 | | | | |-- Comma: , | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- FloatConst: 0.10 | | | `-- R_PAREN: ) | | |-- Comma: , | | |-- varDef | | | |-- Ident: sd1 | | | |-- Assign: = | | | `-- initVal | | | `-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: circle_sdf | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: x | | | | |-- Comma: , | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: y | | | | |-- Comma: , | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- FloatConst: 0.6 | | | | |-- Comma: , | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- FloatConst: 0.6 | | | | |-- Comma: , | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- FloatConst: 0.05 | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- If: if | | |-- L_PAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: sd0 | | | |-- LtOp: < | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: sd1 | | |-- R_PAREN: ) | | |-- stmt | | | `-- block | | | |-- L_BRACE: { | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | |-- Ident: ret | | | | | |-- L_BRACKET: [ | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 0 | | | | | `-- R_BRACKET: ] | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: sd0 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | |-- Ident: ret | | | | | |-- L_BRACKET: [ | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 1 | | | | | `-- R_BRACKET: ] | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- FloatConst: 3.0 | | | | `-- Semi: ; | | | `-- R_BRACE: } | | |-- Else: else | | `-- stmt | | `-- block | | |-- L_BRACE: { | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | |-- Ident: ret | | | | |-- L_BRACKET: [ | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 0 | | | | `-- R_BRACKET: ] | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: sd1 | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | |-- Ident: ret | | | | |-- L_BRACKET: [ | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 1 | | | | `-- R_BRACKET: ] | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- FloatConst: 0.0 | | | `-- Semi: ; | | `-- R_BRACE: } | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Float: float | |-- Ident: trace | |-- L_PAREN: ( | |-- funcFParams | | |-- funcFParam | | | |-- bType | | | | `-- Float: float | | | `-- Ident: ox | | |-- Comma: , | | |-- funcFParam | | | |-- bType | | | | `-- Float: float | | | `-- Ident: oy | | |-- Comma: , | | |-- funcFParam | | | |-- bType | | | | `-- Float: float | | | `-- Ident: dx | | |-- Comma: , | | `-- funcFParam | | |-- bType | | | `-- Float: float | | `-- Ident: dy | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Float: float | | |-- varDef | | | |-- Ident: t | | | |-- Assign: = | | | `-- initVal | | | `-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- FloatConst: 0.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 | | |-- L_PAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | |-- lAndExp | | | | `-- eqExp | | | | `-- relExp | | | | |-- relExp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: i | | | | |-- LtOp: < | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: MAX_STEP | | | |-- AndOp: && | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: t | | | |-- LtOp: < | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: MAX_DISTANCE | | |-- R_PAREN: ) | | `-- stmt | | `-- block | | |-- L_BRACE: { | | |-- blockItem | | | `-- decl | | | `-- varDecl | | | |-- bType | | | | `-- Float: float | | | |-- varDef | | | | |-- Ident: ret | | | | |-- L_BRACKET: [ | | | | |-- constExp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 2 | | | | `-- R_BRACKET: ] | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: scene | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: ox | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | |-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: dx | | | | | | |-- MulOp: * | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: t | | | | | |-- Comma: , | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: oy | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | |-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: dy | | | | | | |-- MulOp: * | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: t | | | | | |-- Comma: , | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: ret | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- If: if | | | |-- L_PAREN: ( | | | |-- cond | | | | `-- lOrExp | | | | `-- lAndExp | | | | `-- eqExp | | | | `-- relExp | | | | |-- relExp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | |-- Ident: ret | | | | | |-- L_BRACKET: [ | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 0 | | | | | `-- R_BRACKET: ] | | | | |-- LtOp: < | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: EPSILON | | | |-- R_PAREN: ) | | | `-- stmt | | | |-- Return: return | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | |-- Ident: ret | | | | |-- L_BRACKET: [ | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 1 | | | | `-- R_BRACKET: ] | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | `-- Ident: t | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: t | | | | |-- AddOp: + | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | |-- Ident: ret | | | | |-- L_BRACKET: [ | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 0 | | | | `-- R_BRACKET: ] | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | `-- Ident: i | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: i | | | | |-- AddOp: + | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 1 | | | `-- Semi: ; | | `-- R_BRACE: } | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- FloatConst: 0.0 | | `-- Semi: ; | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Float: float | |-- Ident: sample | |-- L_PAREN: ( | |-- funcFParams | | |-- funcFParam | | | |-- bType | | | | `-- Float: float | | | `-- Ident: x | | |-- Comma: , | | `-- funcFParam | | |-- bType | | | `-- Float: float | | `-- Ident: y | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Float: float | | |-- varDef | | | |-- Ident: sum | | | |-- Assign: = | | | `-- initVal | | | `-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- FloatConst: 0.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 | | |-- L_PAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: i | | | |-- LtOp: < | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: N | | |-- R_PAREN: ) | | `-- stmt | | `-- block | | |-- L_BRACE: { | | |-- blockItem | | | `-- decl | | | `-- varDecl | | | |-- bType | | | | `-- Float: float | | | |-- varDef | | | | |-- Ident: rnd | | | | |-- Assign: = | | | | `-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: rand | | | | |-- L_PAREN: ( | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- decl | | | `-- varDecl | | | |-- bType | | | | `-- Float: float | | | |-- varDef | | | | |-- Ident: a | | | | |-- Assign: = | | | | `-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | |-- mulExp | | | | | |-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: TWO_PI | | | | | |-- MulOp: * | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | |-- L_PAREN: ( | | | | | |-- exp | | | | | | `-- addExp | | | | | | |-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: i | | | | | | |-- AddOp: + | | | | | | `-- mulExp | | | | | | |-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: rnd | | | | | | |-- DivOp: / | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: RAND_MAX | | | | | `-- R_PAREN: ) | | | | |-- DivOp: / | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: N | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | `-- Ident: sum | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: sum | | | | |-- AddOp: + | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: trace | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: x | | | | | |-- Comma: , | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: y | | | | | |-- Comma: , | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | |-- Ident: my_cos | | | | | | |-- L_PAREN: ( | | | | | | |-- funcRParams | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: a | | | | | | `-- R_PAREN: ) | | | | | |-- Comma: , | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | |-- Ident: my_sin | | | | | |-- L_PAREN: ( | | | | | |-- funcRParams | | | | | | `-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: a | | | | | `-- R_PAREN: ) | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | `-- Ident: i | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: i | | | | |-- AddOp: + | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 1 | | | `-- Semi: ; | | `-- R_BRACE: } | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | |-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: sum | | | |-- DivOp: / | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: N | | `-- Semi: ; | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Void: void | |-- Ident: write_pgm | |-- L_PAREN: ( | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 80 | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 50 | | | `-- 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 | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putint | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: W | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 32 | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putint | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: H | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 32 | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putint | | | |-- L_PAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 255 | | | `-- 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 | | `-- decl | | `-- varDecl | | |-- bType | | | `-- Int: int | | |-- varDef | | | |-- Ident: y | | | |-- Assign: = | | | `-- initVal | | | `-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 0 | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- While: while | | |-- L_PAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: y | | | |-- LtOp: < | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: H | | |-- R_PAREN: ) | | `-- stmt | | `-- block | | |-- L_BRACE: { | | |-- blockItem | | | `-- decl | | | `-- varDecl | | | |-- bType | | | | `-- Int: int | | | |-- varDef | | | | |-- Ident: x | | | | |-- Assign: = | | | | `-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 0 | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- While: while | | | |-- L_PAREN: ( | | | |-- cond | | | | `-- lOrExp | | | | `-- lAndExp | | | | `-- eqExp | | | | `-- relExp | | | | |-- relExp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: x | | | | |-- LtOp: < | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: W | | | |-- R_PAREN: ) | | | `-- stmt | | | `-- block | | | |-- L_BRACE: { | | | |-- blockItem | | | | `-- decl | | | | `-- varDecl | | | | |-- bType | | | | | `-- Float: float | | | | |-- varDef | | | | | |-- Ident: xx | | | | | |-- Assign: = | | | | | `-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: x | | | | |-- Comma: , | | | | |-- varDef | | | | | |-- Ident: yy | | | | | |-- Assign: = | | | | | `-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: y | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- decl | | | | `-- varDecl | | | | |-- bType | | | | | `-- Int: int | | | | |-- varDef | | | | | |-- Ident: p | | | | | |-- Assign: = | | | | | `-- initVal | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | |-- mulExp | | | | | | `-- unaryExp | | | | | | |-- Ident: sample | | | | | | |-- L_PAREN: ( | | | | | | |-- funcRParams | | | | | | | |-- exp | | | | | | | | `-- addExp | | | | | | | | `-- mulExp | | | | | | | | |-- mulExp | | | | | | | | | `-- unaryExp | | | | | | | | | `-- primaryExp | | | | | | | | | `-- lVal | | | | | | | | | `-- Ident: xx | | | | | | | | |-- DivOp: / | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: W | | | | | | | |-- Comma: , | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: yy | | | | | | | |-- DivOp: / | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: H | | | | | | `-- R_PAREN: ) | | | | | |-- MulOp: * | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- FloatConst: 255.0 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- If: if | | | | |-- L_PAREN: ( | | | | |-- cond | | | | | `-- lOrExp | | | | | `-- lAndExp | | | | | `-- eqExp | | | | | `-- relExp | | | | | |-- relExp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: p | | | | | |-- GtOp: > | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 255 | | | | |-- R_PAREN: ) | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: p | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 255 | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | |-- Ident: putint | | | | | |-- L_PAREN: ( | | | | | |-- funcRParams | | | | | | `-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: p | | | | | `-- R_PAREN: ) | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | |-- Ident: putch | | | | | |-- L_PAREN: ( | | | | | |-- funcRParams | | | | | | `-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- IntConst: 32 | | | | | `-- R_PAREN: ) | | | | `-- Semi: ; | | | |-- blockItem | | | | `-- stmt | | | | |-- lVal | | | | | `-- Ident: x | | | | |-- Assign: = | | | | |-- exp | | | | | `-- addExp | | | | | |-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: x | | | | | |-- AddOp: + | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 1 | | | | `-- Semi: ; | | | `-- R_BRACE: } | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putch | | | | |-- L_PAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 10 | | | | `-- R_PAREN: ) | | | `-- Semi: ; | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | `-- Ident: y | | | |-- Assign: = | | | |-- exp | | | | `-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: y | | | | |-- AddOp: + | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 1 | | | `-- Semi: ; | | `-- R_BRACE: } | `-- R_BRACE: } |-- funcDef | |-- funcType | | `-- Int: int | |-- Ident: main | |-- L_PAREN: ( | |-- R_PAREN: ) | `-- block | |-- L_BRACE: { | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: write_pgm | | | |-- L_PAREN: ( | | | `-- R_PAREN: ) | | `-- Semi: ; | |-- blockItem | | `-- stmt | | |-- Return: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 0 | | `-- Semi: ; | `-- R_BRACE: } `-- EOF: