From c400afaffeb6a89153e0dadef5f83f14aa37780a Mon Sep 17 00:00:00 2001 From: zhanhaoming <1978583449@qq.com> Date: Thu, 19 Mar 2026 19:33:41 +0800 Subject: [PATCH] lab1 --- lab1_results/report.html | 170 + .../test_case/functional/05_arr_defn4.tree | 651 ++ .../test_case/functional/09_func_defn.tree | 116 + .../test_case/functional/11_add2.tree | 69 + .../test_case/functional/13_sub2.tree | 67 + .../functional/15_graph_coloring.tree | 1337 ++++ .../functional/22_matrix_multiply.tree | 1001 +++ .../test_case/functional/25_scope3.tree | 699 +++ .../test_case/functional/29_break.tree | 165 + .../test_case/functional/36_op_priority2.tree | 125 + .../test_case/functional/95_float.tree | 1493 +++++ .../test_case/functional/simple_add.tree | 63 + .../test_case/performance/01_mm2.tree | 1472 +++++ .../test_case/performance/02_mv3.tree | 1055 ++++ .../test_case/performance/03_sort1.tree | 1935 ++++++ .../test_case/performance/2025-MYO-20.tree | 1843 ++++++ lab1_results/test_case/performance/fft0.tree | 2173 +++++++ .../performance/gameoflife-oscillator.tree | 1810 ++++++ .../test_case/performance/if-combine3.tree | 5394 +++++++++++++++++ .../performance/large_loop_array_2.tree | 779 +++ .../test_case/performance/transpose0.tree | 890 +++ .../test_case/performance/vector_mul3.tree | 1573 +++++ src/antlr4/SysY.g4 | 238 +- test1.sh | 276 + 24 files changed, 25340 insertions(+), 54 deletions(-) create mode 100644 lab1_results/report.html create mode 100644 lab1_results/test_case/functional/05_arr_defn4.tree create mode 100644 lab1_results/test_case/functional/09_func_defn.tree create mode 100644 lab1_results/test_case/functional/11_add2.tree create mode 100644 lab1_results/test_case/functional/13_sub2.tree create mode 100644 lab1_results/test_case/functional/15_graph_coloring.tree create mode 100644 lab1_results/test_case/functional/22_matrix_multiply.tree create mode 100644 lab1_results/test_case/functional/25_scope3.tree create mode 100644 lab1_results/test_case/functional/29_break.tree create mode 100644 lab1_results/test_case/functional/36_op_priority2.tree create mode 100644 lab1_results/test_case/functional/95_float.tree create mode 100644 lab1_results/test_case/functional/simple_add.tree create mode 100644 lab1_results/test_case/performance/01_mm2.tree create mode 100644 lab1_results/test_case/performance/02_mv3.tree create mode 100644 lab1_results/test_case/performance/03_sort1.tree create mode 100644 lab1_results/test_case/performance/2025-MYO-20.tree create mode 100644 lab1_results/test_case/performance/fft0.tree create mode 100644 lab1_results/test_case/performance/gameoflife-oscillator.tree create mode 100644 lab1_results/test_case/performance/if-combine3.tree create mode 100644 lab1_results/test_case/performance/large_loop_array_2.tree create mode 100644 lab1_results/test_case/performance/transpose0.tree create mode 100644 lab1_results/test_case/performance/vector_mul3.tree create mode 100755 test1.sh diff --git a/lab1_results/report.html b/lab1_results/report.html new file mode 100644 index 0000000..1acbc41 --- /dev/null +++ b/lab1_results/report.html @@ -0,0 +1,170 @@ + + + + 语法树生成报告 + + + +

SysY语法树生成报告

+
+

统计信息

+

生成时间: Thu Mar 19 19:32:48 CST 2026

+

测试目录: ./test

+

输出目录: ./lab1_results

+

总计: 21

+

成功: 21

+

失败: 0

+

跳过: 0

+

成功率: 100%

+
+ +

详细结果

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
文件状态输出文件错误信息
test_case/performance/02_mv3.sy成功02_mv3.tree-
test_case/performance/03_sort1.sy成功03_sort1.tree-
test_case/performance/if-combine3.sy成功if-combine3.tree-
test_case/performance/01_mm2.sy成功01_mm2.tree-
test_case/performance/vector_mul3.sy成功vector_mul3.tree-
test_case/performance/large_loop_array_2.sy成功large_loop_array_2.tree-
test_case/performance/2025-MYO-20.sy成功2025-MYO-20.tree-
test_case/performance/gameoflife-oscillator.sy成功gameoflife-oscillator.tree-
test_case/performance/fft0.sy成功fft0.tree-
test_case/performance/transpose0.sy成功transpose0.tree-
test_case/functional/05_arr_defn4.sy成功05_arr_defn4.tree-
test_case/functional/15_graph_coloring.sy成功15_graph_coloring.tree-
test_case/functional/29_break.sy成功29_break.tree-
test_case/functional/simple_add.sy成功simple_add.tree-
test_case/functional/95_float.sy成功95_float.tree-
test_case/functional/13_sub2.sy成功13_sub2.tree-
test_case/functional/11_add2.sy成功11_add2.tree-
test_case/functional/22_matrix_multiply.sy成功22_matrix_multiply.tree-
test_case/functional/25_scope3.sy成功25_scope3.tree-
test_case/functional/09_func_defn.sy成功09_func_defn.tree-
test_case/functional/36_op_priority2.sy成功36_op_priority2.tree-
+ + diff --git a/lab1_results/test_case/functional/05_arr_defn4.tree b/lab1_results/test_case/functional/05_arr_defn4.tree new file mode 100644 index 0000000..eb877f5 --- /dev/null +++ b/lab1_results/test_case/functional/05_arr_defn4.tree @@ -0,0 +1,651 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- constDecl +| | |-- Const: const +| | |-- bType +| | | `-- Int: int +| | |-- constDef +| | | |-- Ident: a +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 4 +| | | |-- R_BRACKET: ] +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- R_BRACKET: ] +| | | |-- Assign: = +| | | `-- constInitVal +| | | |-- L_BRACE: { +| | | |-- constInitVal +| | | | |-- L_BRACE: { +| | | | |-- constInitVal +| | | | | `-- constExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- Comma: , +| | | | |-- constInitVal +| | | | | `-- constExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | `-- R_BRACE: } +| | | |-- Comma: , +| | | |-- constInitVal +| | | | |-- L_BRACE: { +| | | | |-- constInitVal +| | | | | `-- constExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 3 +| | | | |-- Comma: , +| | | | |-- constInitVal +| | | | | `-- constExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 4 +| | | | `-- R_BRACE: } +| | | |-- Comma: , +| | | |-- constInitVal +| | | | |-- L_BRACE: { +| | | | `-- R_BRACE: } +| | | |-- Comma: , +| | | |-- constInitVal +| | | | `-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 7 +| | | `-- R_BRACE: } +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- constDecl +| | |-- Const: const +| | |-- bType +| | | `-- Int: int +| | |-- constDef +| | | |-- Ident: N +| | | |-- Assign: = +| | | `-- constInitVal +| | | `-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 3 +| | `-- Semi: ; +| |-- 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: 2 +| | | |-- R_BRACKET: ] +| | | |-- Assign: = +| | | `-- initVal +| | | |-- L_BRACE: { +| | | `-- R_BRACE: } +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: c +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 4 +| | | |-- R_BRACKET: ] +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- R_BRACKET: ] +| | | |-- Assign: = +| | | `-- initVal +| | | |-- L_BRACE: { +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- Comma: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- Comma: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 3 +| | | |-- Comma: , +| | | |-- 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 +| | | |-- Comma: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 7 +| | | |-- Comma: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 8 +| | | `-- R_BRACE: } +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: d +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: N +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- R_BRACKET: ] +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- R_BRACKET: ] +| | | |-- Assign: = +| | | `-- initVal +| | | |-- L_BRACE: { +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- Comma: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- Comma: , +| | | |-- initVal +| | | | |-- L_BRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 3 +| | | | `-- R_BRACE: } +| | | |-- Comma: , +| | | |-- initVal +| | | | |-- L_BRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 5 +| | | | `-- R_BRACE: } +| | | |-- Comma: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: a +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 3 +| | | | |-- R_BRACKET: ] +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- R_BRACKET: ] +| | | |-- Comma: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 8 +| | | `-- R_BRACE: } +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: e +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 4 +| | | |-- R_BRACKET: ] +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- R_BRACKET: ] +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- R_BRACKET: ] +| | | |-- Assign: = +| | | `-- initVal +| | | |-- L_BRACE: { +| | | |-- initVal +| | | | |-- L_BRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: d +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- R_BRACKET: ] +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | |-- L_BRACE: { +| | | | | |-- initVal +| | | | | | `-- 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: 1 +| | | | | | `-- R_BRACKET: ] +| | | | | `-- R_BRACE: } +| | | | `-- 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: } +| | | |-- Comma: , +| | | |-- initVal +| | | | |-- L_BRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 5 +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 6 +| | | | `-- R_BRACE: } +| | | |-- Comma: , +| | | |-- initVal +| | | | |-- L_BRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 7 +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 8 +| | | | `-- R_BRACE: } +| | | `-- R_BRACE: } +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | |-- addExp +| | | | |-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: e +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 3 +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 0 +| | | | | | `-- R_BRACKET: ] +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: e +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 0 +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 0 +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 0 +| | | | | `-- R_BRACKET: ] +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: e +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- R_BRACKET: ] +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- R_BRACKET: ] +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- R_BRACKET: ] +| | | |-- AddOp: + +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | |-- Ident: d +| | | |-- L_BRACKET: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 3 +| | | |-- R_BRACKET: ] +| | | |-- L_BRACKET: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- R_BRACKET: ] +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/functional/09_func_defn.tree b/lab1_results/test_case/functional/09_func_defn.tree new file mode 100644 index 0000000..8bb8b73 --- /dev/null +++ b/lab1_results/test_case/functional/09_func_defn.tree @@ -0,0 +1,116 @@ +compUnit +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | `-- Ident: a +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: func +| |-- L_PAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: p +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: p +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | |-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: p +| | | |-- SubOp: - +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: p +| | `-- 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 +| | `-- 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 +| | | |-- Ident: func +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: b +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/functional/11_add2.tree b/lab1_results/test_case/functional/11_add2.tree new file mode 100644 index 0000000..749c8a4 --- /dev/null +++ b/lab1_results/test_case/functional/11_add2.tree @@ -0,0 +1,69 @@ +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 +| | | |-- unaryOp +| | | | `-- SubOp: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | |-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | |-- AddOp: + +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: b +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/functional/13_sub2.tree b/lab1_results/test_case/functional/13_sub2.tree new file mode 100644 index 0000000..f492ce0 --- /dev/null +++ b/lab1_results/test_case/functional/13_sub2.tree @@ -0,0 +1,67 @@ +compUnit +|-- decl +| `-- constDecl +| |-- Const: const +| |-- bType +| | `-- Int: int +| |-- constDef +| | |-- Ident: a +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 10 +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | `-- Ident: b +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: b +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 2 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | |-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: b +| | | |-- SubOp: - +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: a +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/functional/15_graph_coloring.tree b/lab1_results/test_case/functional/15_graph_coloring.tree new file mode 100644 index 0000000..2f92c51 --- /dev/null +++ b/lab1_results/test_case/functional/15_graph_coloring.tree @@ -0,0 +1,1337 @@ +compUnit +|-- decl +| `-- constDecl +| |-- Const: const +| |-- bType +| | `-- Int: int +| |-- constDef +| | |-- Ident: V +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 4 +| `-- Semi: ; +|-- decl +| `-- constDecl +| |-- Const: const +| |-- bType +| | `-- Int: int +| |-- constDef +| | |-- Ident: space +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 32 +| `-- Semi: ; +|-- decl +| `-- constDecl +| |-- Const: const +| |-- bType +| | `-- Int: int +| |-- constDef +| | |-- Ident: LF +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 10 +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: printSolution +| |-- L_PAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | |-- Ident: color +| | |-- L_BRACKET: [ +| | `-- R_BRACKET: ] +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- 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: V +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putint +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: color +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- R_BRACKET: ] +| | | | `-- R_PAREN: ) +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putch +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: space +| | | | `-- 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 +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: LF +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: printMessage +| |-- 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: 78 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 111 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 116 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: space +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 101 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 120 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 105 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 115 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 116 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: isSafe +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | |-- Ident: graph +| | | |-- L_BRACKET: [ +| | | |-- R_BRACKET: ] +| | | |-- L_BRACKET: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: V +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | |-- Ident: color +| | |-- L_BRACKET: [ +| | `-- R_BRACKET: ] +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- 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: V +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- Int: int +| | | |-- varDef +| | | | |-- Ident: j +| | | | |-- Assign: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- While: while +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: V +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- If: if +| | | | |-- L_PAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | |-- lAndExp +| | | | | | `-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: graph +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | |-- AndOp: && +| | | | | `-- eqExp +| | | | | |-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: color +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | |-- EqOp: == +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: color +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- R_BRACKET: ] +| | | | |-- R_PAREN: ) +| | | | `-- stmt +| | | | |-- Return: return +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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 +| | | `-- IntConst: 1 +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: graphColoring +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | |-- Ident: graph +| | | |-- L_BRACKET: [ +| | | |-- R_BRACKET: ] +| | | |-- L_BRACKET: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: V +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: m +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: i +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | |-- Ident: color +| | |-- L_BRACKET: [ +| | `-- R_BRACKET: ] +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- EqOp: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: V +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- If: if +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: isSafe +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: graph +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: color +| | | | `-- R_PAREN: ) +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: printSolution +| | | | | |-- L_PAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: color +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- Return: return +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- Return: return +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: j +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- While: while +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: j +| | | |-- LeOp: <= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: m +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: color +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: j +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- If: if +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: graphColoring +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: graph +| | | | | |-- Comma: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: m +| | | | | |-- Comma: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: color +| | | | `-- R_PAREN: ) +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | |-- Return: return +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: color +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- R_BRACKET: ] +| | | |-- 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 +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: graph +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: V +| | | |-- R_BRACKET: ] +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: V +| | | |-- R_BRACKET: ] +| | | |-- Assign: = +| | | `-- initVal +| | | |-- L_BRACE: { +| | | |-- initVal +| | | | |-- L_BRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- R_BRACE: } +| | | |-- Comma: , +| | | |-- initVal +| | | | |-- L_BRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- R_BRACE: } +| | | |-- Comma: , +| | | |-- initVal +| | | | |-- L_BRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- R_BRACE: } +| | | |-- Comma: , +| | | |-- initVal +| | | | |-- L_BRACE: { +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- Comma: , +| | | | |-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- R_BRACE: } +| | | `-- R_BRACE: } +| | |-- Comma: , +| | |-- varDef +| | | |-- Ident: m +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 3 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: color +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: V +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- 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: V +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: color +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- 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 +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- NotOp: ! +| | | `-- unaryExp +| | | |-- Ident: graphColoring +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: graph +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: m +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: color +| | | `-- R_PAREN: ) +| | |-- R_PAREN: ) +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: printMessage +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/functional/22_matrix_multiply.tree b/lab1_results/test_case/functional/22_matrix_multiply.tree new file mode 100644 index 0000000..c4d8e8c --- /dev/null +++ b/lab1_results/test_case/functional/22_matrix_multiply.tree @@ -0,0 +1,1001 @@ +compUnit +|-- decl +| `-- constDecl +| |-- Const: const +| |-- bType +| | `-- Int: int +| |-- constDef +| | |-- Ident: MAX_SIZE +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 100 +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: a +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: MAX_SIZE +| | |-- R_BRACKET: ] +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: MAX_SIZE +| | `-- R_BRACKET: ] +| |-- Comma: , +| |-- varDef +| | |-- Ident: b +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: MAX_SIZE +| | |-- R_BRACKET: ] +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: MAX_SIZE +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: res +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: MAX_SIZE +| | |-- R_BRACKET: ] +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: MAX_SIZE +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | `-- Ident: n1 +| |-- Comma: , +| |-- varDef +| | `-- Ident: m1 +| |-- Comma: , +| |-- varDef +| | `-- Ident: n2 +| |-- Comma: , +| |-- varDef +| | `-- Ident: m2 +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: matrix_multiply +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- 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: m1 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- Int: int +| | | |-- varDef +| | | | |-- Ident: j +| | | | |-- 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: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n2 +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- Int: int +| | | | |-- varDef +| | | | | |-- Ident: k +| | | | | |-- 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: k +| | | | | |-- LtOp: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: n1 +| | | | |-- R_PAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: res +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: res +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- R_BRACKET: ] +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: a +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- R_BRACKET: ] +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: k +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- MulOp: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: b +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: k +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: k +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: k +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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: } +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | `-- Ident: i +| | |-- Comma: , +| | |-- varDef +| | | `-- Ident: j +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: m1 +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: n1 +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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: m1 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- 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: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n1 +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: a +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getint +| | | | | |-- L_PAREN: ( +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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 +| | |-- lVal +| | | `-- Ident: m2 +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: n2 +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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: m2 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- 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: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n2 +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: b +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getint +| | | | | |-- L_PAREN: ( +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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 +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: matrix_multiply +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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: m1 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- 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: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n2 +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: putint +| | | | | |-- L_PAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: res +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | `-- 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: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- 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: 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 +| | | `-- IntConst: 0 +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/functional/25_scope3.tree b/lab1_results/test_case/functional/25_scope3.tree new file mode 100644 index 0000000..e01b6a8 --- /dev/null +++ b/lab1_results/test_case/functional/25_scope3.tree @@ -0,0 +1,699 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- 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: 97 +| | | `-- 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: a +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | |-- Comma: , +| | |-- varDef +| | | |-- Ident: putch +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: a +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- Int: int +| | | |-- varDef +| | | | |-- Ident: b +| | | | |-- Assign: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 3 +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: b +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 4 +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: putch +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: putch +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: b +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: b +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: b +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 5 +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- Int: int +| | | | |-- varDef +| | | | | |-- Ident: main +| | | | | |-- Assign: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: b +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 6 +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: a +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: a +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: main +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: putch +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | |-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: putch +| | | | | | | |-- AddOp: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: a +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: b +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: main +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: b +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: b +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: a +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- decl +| | | | | `-- varDecl +| | | | | |-- bType +| | | | | | `-- Int: int +| | | | | |-- varDef +| | | | | | |-- Ident: a +| | | | | | |-- Assign: = +| | | | | | `-- initVal +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: main +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 7 +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: a +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: a +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 8 +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: putch +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | |-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: putch +| | | | | | | | |-- AddOp: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: a +| | | | | | | |-- AddOp: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: b +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: main +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | `-- block +| | | | | |-- L_BRACE: { +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: b +| | | | | | |-- Assign: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: b +| | | | | | | |-- AddOp: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: a +| | | | | | `-- Semi: ; +| | | | | |-- blockItem +| | | | | | `-- decl +| | | | | | `-- varDecl +| | | | | | |-- bType +| | | | | | | `-- Int: int +| | | | | | |-- varDef +| | | | | | | |-- Ident: b +| | | | | | | |-- Assign: = +| | | | | | | `-- initVal +| | | | | | | `-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: main +| | | | | | | |-- AddOp: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 9 +| | | | | | `-- Semi: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: a +| | | | | | |-- Assign: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: a +| | | | | | | |-- AddOp: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 10 +| | | | | | `-- Semi: ; +| | | | | |-- blockItem +| | | | | | `-- decl +| | | | | | `-- constDecl +| | | | | | |-- Const: const +| | | | | | |-- bType +| | | | | | | `-- Int: int +| | | | | | |-- constDef +| | | | | | | |-- Ident: a +| | | | | | | |-- Assign: = +| | | | | | | `-- constInitVal +| | | | | | | `-- constExp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 11 +| | | | | | `-- Semi: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: b +| | | | | | |-- Assign: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: b +| | | | | | | |-- AddOp: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 12 +| | | | | | `-- Semi: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: putch +| | | | | | |-- Assign: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | |-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: putch +| | | | | | | | | |-- AddOp: + +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: a +| | | | | | | | |-- AddOp: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: b +| | | | | | | |-- AddOp: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: main +| | | | | | `-- Semi: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | `-- block +| | | | | | |-- L_BRACE: { +| | | | | | |-- blockItem +| | | | | | | `-- stmt +| | | | | | | |-- lVal +| | | | | | | | `-- Ident: main +| | | | | | | |-- Assign: = +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: main +| | | | | | | | |-- AddOp: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: b +| | | | | | | `-- Semi: ; +| | | | | | |-- blockItem +| | | | | | | `-- decl +| | | | | | | `-- varDecl +| | | | | | | |-- bType +| | | | | | | | `-- Int: int +| | | | | | | |-- varDef +| | | | | | | | |-- Ident: main +| | | | | | | | |-- Assign: = +| | | | | | | | `-- initVal +| | | | | | | | `-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: b +| | | | | | | | |-- AddOp: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 13 +| | | | | | | `-- Semi: ; +| | | | | | |-- blockItem +| | | | | | | `-- stmt +| | | | | | | |-- lVal +| | | | | | | | `-- Ident: main +| | | | | | | |-- Assign: = +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: main +| | | | | | | | |-- AddOp: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: a +| | | | | | | `-- Semi: ; +| | | | | | |-- blockItem +| | | | | | | `-- stmt +| | | | | | | |-- lVal +| | | | | | | | `-- Ident: putch +| | | | | | | |-- Assign: = +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | |-- addExp +| | | | | | | | | | |-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- lVal +| | | | | | | | | | | `-- Ident: putch +| | | | | | | | | | |-- AddOp: + +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: a +| | | | | | | | | |-- AddOp: + +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: b +| | | | | | | | |-- AddOp: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: main +| | | | | | | `-- Semi: ; +| | | | | | `-- R_BRACE: } +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: putch +| | | | | | |-- Assign: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: putch +| | | | | | | |-- SubOp: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: main +| | | | | | `-- Semi: ; +| | | | | `-- R_BRACE: } +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: putch +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: putch +| | | | | | |-- SubOp: - +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: b +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: putch +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: putch +| | | | | |-- SubOp: - +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | `-- R_BRACE: } +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: putch +| | | |-- ModOp: % +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 77 +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/functional/29_break.tree b/lab1_results/test_case/functional/29_break.tree new file mode 100644 index 0000000..f1b4456 --- /dev/null +++ b/lab1_results/test_case/functional/29_break.tree @@ -0,0 +1,165 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | `-- Ident: i +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | `-- Ident: sum +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: sum +| | |-- Assign: = +| | |-- 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 +| | | `-- number +| | | `-- IntConst: 100 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- If: if +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | |-- eqExp +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- EqOp: == +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 50 +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- Break: break +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: sum +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: sum +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | `-- 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 +| | | `-- lVal +| | | `-- Ident: sum +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/functional/36_op_priority2.tree b/lab1_results/test_case/functional/36_op_priority2.tree new file mode 100644 index 0000000..9c15746 --- /dev/null +++ b/lab1_results/test_case/functional/36_op_priority2.tree @@ -0,0 +1,125 @@ +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 +| | |-- 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 +| | | | |-- L_PAREN: ( +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: c +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | `-- R_PAREN: ) +| | | |-- MulOp: * +| | | `-- unaryExp +| | | `-- primaryExp +| | | |-- L_PAREN: ( +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | |-- SubOp: - +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: d +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/functional/95_float.tree b/lab1_results/test_case/functional/95_float.tree new file mode 100644 index 0000000..16cf0b4 --- /dev/null +++ b/lab1_results/test_case/functional/95_float.tree @@ -0,0 +1,1493 @@ +compUnit +|-- decl +| `-- constDecl +| |-- Const: const +| |-- bType +| | `-- Float: float +| |-- constDef +| | |-- Ident: RADIUS +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 5.5 +| |-- Comma: , +| |-- constDef +| | |-- Ident: PI +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 03.141592653589793 +| |-- Comma: , +| |-- constDef +| | |-- Ident: EPS +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 1e-6 +| `-- Semi: ; +|-- decl +| `-- constDecl +| |-- Const: const +| |-- bType +| | `-- Float: float +| |-- constDef +| | |-- Ident: PI_HEX +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 0x1.921fb6p+1 +| |-- Comma: , +| |-- constDef +| | |-- Ident: HEX2 +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 0x.AP-3 +| `-- Semi: ; +|-- decl +| `-- constDecl +| |-- Const: const +| |-- bType +| | `-- Float: float +| |-- constDef +| | |-- Ident: FACT +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | |-- unaryOp +| | | `-- SubOp: - +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: .33E+5 +| |-- Comma: , +| |-- constDef +| | |-- Ident: EVAL1 +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | |-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: PI +| | | |-- MulOp: * +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: RADIUS +| | |-- MulOp: * +| | `-- unaryExp +| | `-- primaryExp +| | `-- lVal +| | `-- Ident: RADIUS +| |-- Comma: , +| |-- constDef +| | |-- Ident: EVAL2 +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | |-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- MulOp: * +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: PI_HEX +| | |-- MulOp: * +| | `-- unaryExp +| | `-- primaryExp +| | `-- lVal +| | `-- Ident: RADIUS +| |-- Comma: , +| |-- constDef +| | |-- Ident: EVAL3 +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | |-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: PI +| | | |-- MulOp: * +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 2 +| | |-- MulOp: * +| | `-- unaryExp +| | `-- primaryExp +| | `-- lVal +| | `-- Ident: RADIUS +| `-- Semi: ; +|-- decl +| `-- constDecl +| |-- Const: const +| |-- bType +| | `-- Float: float +| |-- constDef +| | |-- Ident: CONV1 +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 233 +| |-- Comma: , +| |-- constDef +| | |-- Ident: CONV2 +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 0xfff +| `-- Semi: ; +|-- decl +| `-- constDecl +| |-- Const: const +| |-- bType +| | `-- Int: int +| |-- constDef +| | |-- Ident: MAX +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 1e9 +| |-- Comma: , +| |-- constDef +| | |-- Ident: TWO +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 2.9 +| |-- Comma: , +| |-- constDef +| | |-- Ident: THREE +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- FloatConst: 3.2 +| |-- Comma: , +| |-- constDef +| | |-- Ident: FIVE +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | |-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: TWO +| | |-- AddOp: + +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- lVal +| | `-- Ident: THREE +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Float: float +| |-- Ident: float_abs +| |-- 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 +| | | |-- LtOp: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- R_PAREN: ) +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SubOp: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: x +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: x +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Float: float +| |-- Ident: circle_area +| |-- L_PAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: radius +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | |-- L_PAREN: ( +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: PI +| | | | | | | |-- MulOp: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: radius +| | | | | | |-- MulOp: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: radius +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | |-- L_PAREN: ( +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: radius +| | | | | | | |-- MulOp: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: radius +| | | | | | `-- R_PAREN: ) +| | | | | |-- MulOp: * +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: PI +| | | | `-- R_PAREN: ) +| | | |-- DivOp: / +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 2 +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: float_eq +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Float: float +| | | `-- Ident: a +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Float: float +| | `-- Ident: b +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: float_abs +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: a +| | | | | |-- SubOp: - +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | `-- R_PAREN: ) +| | | |-- LtOp: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: EPS +| | |-- R_PAREN: ) +| | |-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- Return: return +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | |-- MulOp: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- FloatConst: 2. +| | | | | |-- DivOp: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- Else: else +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- Return: return +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: error +| |-- 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: 101 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 114 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 114 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 111 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 114 +| | | `-- 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: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: ok +| |-- 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: 111 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putch +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 107 +| | | `-- 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: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: assert +| |-- L_PAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: cond +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- NotOp: ! +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: cond +| | |-- R_PAREN: ) +| | |-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: error +| | | | | |-- L_PAREN: ( +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- Else: else +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: ok +| | | | |-- L_PAREN: ( +| | | | `-- R_PAREN: ) +| | | `-- Semi: ; +| | `-- R_BRACE: } +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: assert_not +| |-- L_PAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: cond +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: cond +| | |-- R_PAREN: ) +| | |-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: error +| | | | | |-- L_PAREN: ( +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- Else: else +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: ok +| | | | |-- L_PAREN: ( +| | | | `-- R_PAREN: ) +| | | `-- 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: assert_not +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: float_eq +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: HEX2 +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: FACT +| | | | `-- R_PAREN: ) +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: assert_not +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: float_eq +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: EVAL1 +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: EVAL2 +| | | | `-- R_PAREN: ) +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: assert +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: float_eq +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: EVAL2 +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: EVAL3 +| | | | `-- R_PAREN: ) +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: assert +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: float_eq +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | |-- Ident: circle_area +| | | | | | |-- L_PAREN: ( +| | | | | | |-- funcRParams +| | | | | | | `-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: RADIUS +| | | | | | `-- R_PAREN: ) +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: circle_area +| | | | | |-- L_PAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: FIVE +| | | | | `-- R_PAREN: ) +| | | | `-- R_PAREN: ) +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: assert_not +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: float_eq +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: CONV1 +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: CONV2 +| | | | `-- R_PAREN: ) +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 1.5 +| | |-- R_PAREN: ) +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: ok +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- NotOp: ! +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- NotOp: ! +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 3.3 +| | |-- R_PAREN: ) +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: ok +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | |-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: .0 +| | | |-- AndOp: && +| | | `-- eqExp +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 3 +| | |-- R_PAREN: ) +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: error +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | |-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | |-- OrOp: || +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 0.3 +| | |-- R_PAREN: ) +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: ok +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | |-- Comma: , +| | |-- varDef +| | | |-- Ident: p +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Float: float +| | |-- varDef +| | | |-- Ident: arr +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 10 +| | | |-- R_BRACKET: ] +| | | |-- Assign: = +| | | `-- initVal +| | | |-- L_BRACE: { +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 1. +| | | |-- Comma: , +| | | |-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | `-- R_BRACE: } +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: len +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getfarray +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: arr +| | | `-- R_PAREN: ) +| | `-- 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: MAX +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- Float: float +| | | |-- varDef +| | | | |-- Ident: input +| | | | |-- Assign: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: getfloat +| | | | |-- L_PAREN: ( +| | | | `-- R_PAREN: ) +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- Float: float +| | | |-- varDef +| | | | |-- Ident: area +| | | | |-- Assign: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: PI +| | | | | |-- MulOp: * +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: input +| | | | |-- MulOp: * +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: input +| | | |-- Comma: , +| | | |-- varDef +| | | | |-- Ident: area_trunc +| | | | |-- Assign: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: circle_area +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: input +| | | | `-- R_PAREN: ) +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: arr +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: p +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: arr +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: p +| | | | | `-- R_BRACKET: ] +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: input +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putfloat +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: area +| | | | `-- 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: area_trunc +| | | | `-- 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 +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- MulOp: * +| | | | `-- unaryExp +| | | | |-- unaryOp +| | | | | `-- SubOp: - +| | | | `-- unaryExp +| | | | |-- unaryOp +| | | | | `-- SubOp: - +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 1e1 +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: p +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: p +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putfarray +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: len +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: arr +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/functional/simple_add.tree b/lab1_results/test_case/functional/simple_add.tree new file mode 100644 index 0000000..c535d7f --- /dev/null +++ b/lab1_results/test_case/functional/simple_add.tree @@ -0,0 +1,63 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: a +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: b +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 2 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | |-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | |-- AddOp: + +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: b +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/performance/01_mm2.tree b/lab1_results/test_case/performance/01_mm2.tree new file mode 100644 index 0000000..359ef3a --- /dev/null +++ b/lab1_results/test_case/performance/01_mm2.tree @@ -0,0 +1,1472 @@ +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 +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: n +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | |-- Ident: A +| | | |-- L_BRACKET: [ +| | | |-- R_BRACKET: ] +| | | |-- L_BRACKET: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: N +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | |-- Ident: B +| | | |-- L_BRACKET: [ +| | | |-- R_BRACKET: ] +| | | |-- L_BRACKET: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: N +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | |-- Ident: C +| | |-- L_BRACKET: [ +| | |-- R_BRACKET: ] +| | |-- L_BRACKET: [ +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | `-- R_BRACKET: ] +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- 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 +| | |-- 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 +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- 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: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: C +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | |-- 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 +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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 +| | |-- 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 +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: k +| | | |-- LtOp: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- Assign: = +| | | |-- 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 +| | | | `-- stmt +| | | | |-- If: if +| | | | |-- L_PAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | |-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: A +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: k +| | | | | | `-- R_BRACKET: ] +| | | | | |-- EqOp: == +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- R_PAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: i +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- Continue: continue +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- 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: j +| | | | | |-- LtOp: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: n +| | | | |-- R_PAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: C +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: C +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- R_BRACKET: ] +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: A +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- R_BRACKET: ] +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: k +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- MulOp: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: B +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: k +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: j +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- 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 +| | | |-- lVal +| | | | `-- Ident: k +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: k +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| `-- R_BRACE: } +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: A +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | |-- R_BRACKET: ] +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: B +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | |-- R_BRACKET: ] +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: C +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | |-- R_BRACKET: ] +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: n +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- 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 +| | |-- 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 +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- 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: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: A +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getint +| | | | | |-- L_PAREN: ( +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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 +| | |-- 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 +| | |-- 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 +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- 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: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: B +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getint +| | | | | |-- L_PAREN: ( +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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 +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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 +| | | `-- number +| | | `-- IntConst: 5 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: mm +| | | | |-- L_PAREN: ( +| | | | |-- 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 +| | | | `-- R_PAREN: ) +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: mm +| | | | |-- L_PAREN: ( +| | | | |-- 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 +| | | | `-- 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 +| | `-- 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 +| | |-- 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 +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- 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: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: ans +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: ans +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: B +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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 +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putint +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: ans +| | | `-- 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 +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/performance/02_mv3.tree b/lab1_results/test_case/performance/02_mv3.tree new file mode 100644 index 0000000..428db61 --- /dev/null +++ b/lab1_results/test_case/performance/02_mv3.tree @@ -0,0 +1,1055 @@ +compUnit +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | `-- Ident: x +| `-- Semi: ; +|-- decl +| `-- constDecl +| |-- Const: const +| |-- bType +| | `-- Int: int +| |-- constDef +| | |-- Ident: N +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 2010 +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: mv +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: n +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | |-- Ident: A +| | | |-- L_BRACKET: [ +| | | |-- R_BRACKET: ] +| | | |-- L_BRACKET: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: N +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | |-- Ident: b +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | |-- Ident: res +| | |-- L_BRACKET: [ +| | `-- R_BRACKET: ] +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | `-- Ident: x +| | |-- Comma: , +| | |-- varDef +| | | `-- Ident: y +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: y +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: x +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 11 +| | `-- 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 +| | |-- 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 +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: res +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- 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 +| | |-- 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 +| | |-- 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 +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- 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: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- If: if +| | | | |-- L_PAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | |-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: A +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | |-- EqOp: == +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- R_PAREN: ) +| | | | |-- stmt +| | | | | `-- block +| | | | | |-- L_BRACE: { +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: x +| | | | | | |-- Assign: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | |-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: x +| | | | | | | | |-- MulOp: * +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | |-- Ident: b +| | | | | | | | |-- L_BRACKET: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: i +| | | | | | | | `-- R_BRACKET: ] +| | | | | | | |-- AddOp: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: b +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | `-- R_BRACKET: ] +| | | | | | `-- Semi: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: y +| | | | | | |-- Assign: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: y +| | | | | | | |-- SubOp: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: x +| | | | | | `-- Semi: ; +| | | | | `-- R_BRACE: } +| | | | |-- Else: else +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: res +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: res +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: A +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- R_BRACKET: ] +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- MulOp: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: b +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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: } +| `-- R_BRACE: } +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: A +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | |-- R_BRACKET: ] +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: B +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: C +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: N +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: n +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- 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 +| | |-- 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 +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- 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: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: A +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getint +| | | | | |-- L_PAREN: ( +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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 +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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 +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: B +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: getint +| | | | |-- L_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 +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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 +| | | `-- number +| | | `-- IntConst: 50 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: mv +| | | | |-- L_PAREN: ( +| | | | |-- 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 +| | | | `-- R_PAREN: ) +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: mv +| | | | |-- L_PAREN: ( +| | | | |-- 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 +| | | | `-- 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 +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putarray +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: n +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: C +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/performance/03_sort1.tree b/lab1_results/test_case/performance/03_sort1.tree new file mode 100644 index 0000000..145ccf6 --- /dev/null +++ b/lab1_results/test_case/performance/03_sort1.tree @@ -0,0 +1,1935 @@ +compUnit +|-- decl +| `-- constDecl +| |-- Const: const +| |-- bType +| | `-- Int: int +| |-- constDef +| | |-- Ident: base +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 16 +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: getMaxNum +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: n +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | |-- Ident: arr +| | |-- L_BRACKET: [ +| | `-- R_BRACKET: ] +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: ret +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 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 +| | | `-- stmt +| | | |-- If: if +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: arr +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- R_BRACKET: ] +| | | | |-- GtOp: > +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: ret +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: ret +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: arr +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- 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 +| | | `-- lVal +| | | `-- Ident: ret +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: getNumPos +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: num +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: pos +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: tmp +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- 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: pos +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: num +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: num +| | | | |-- DivOp: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: base +| | | `-- 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: num +| | | |-- ModOp: % +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: base +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: radixSort +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: bitround +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | |-- Ident: a +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: l +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: r +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: head +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: base +| | | |-- R_BRACKET: ] +| | | |-- Assign: = +| | | `-- initVal +| | | |-- L_BRACE: { +| | | `-- R_BRACE: } +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: tail +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: base +| | | |-- R_BRACKET: ] +| | | |-- Assign: = +| | | `-- initVal +| | | |-- L_BRACE: { +| | | `-- R_BRACE: } +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: cnt +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: base +| | | |-- R_BRACKET: ] +| | | |-- Assign: = +| | | `-- initVal +| | | |-- L_BRACE: { +| | | `-- R_BRACE: } +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | |-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | |-- eqExp +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: bitround +| | | | |-- EqOp: == +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- unaryOp +| | | | | `-- SubOp: - +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- OrOp: || +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: l +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- GeOp: >= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: r +| | |-- R_PAREN: ) +| | `-- stmt +| | |-- Return: return +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- Int: int +| | | |-- varDef +| | | | |-- Ident: i +| | | | |-- Assign: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: l +| | | `-- 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: r +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: cnt +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | |-- Ident: getNumPos +| | | | | | |-- L_PAREN: ( +| | | | | | |-- funcRParams +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | |-- Ident: a +| | | | | | | | |-- L_BRACKET: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: i +| | | | | | | | `-- R_BRACKET: ] +| | | | | | | |-- Comma: , +| | | | | | | `-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: bitround +| | | | | | `-- R_PAREN: ) +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: cnt +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | |-- Ident: getNumPos +| | | | | | | |-- L_PAREN: ( +| | | | | | | |-- funcRParams +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | |-- Ident: a +| | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | |-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: i +| | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | |-- Comma: , +| | | | | | | | `-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: bitround +| | | | | | | `-- R_PAREN: ) +| | | | | | `-- R_BRACKET: ] +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- 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 +| | | |-- lVal +| | | | |-- Ident: head +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: l +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: tail +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: l +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: cnt +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- R_BRACKET: ] +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- 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: base +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: head +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: tail +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- SubOp: - +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- R_BRACKET: ] +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: tail +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: head +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: cnt +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- 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 +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- Assign: = +| | | |-- 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: base +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- While: while +| | | | |-- L_PAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | `-- relExp +| | | | | |-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: head +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | |-- LtOp: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: tail +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- R_BRACKET: ] +| | | | |-- R_PAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- decl +| | | | | `-- varDecl +| | | | | |-- bType +| | | | | | `-- Int: int +| | | | | |-- varDef +| | | | | | |-- Ident: v +| | | | | | |-- Assign: = +| | | | | | `-- initVal +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: a +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: head +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- R_BRACKET: ] +| | | | | | `-- R_BRACKET: ] +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- While: while +| | | | | |-- L_PAREN: ( +| | | | | |-- cond +| | | | | | `-- lOrExp +| | | | | | `-- lAndExp +| | | | | | `-- eqExp +| | | | | | |-- eqExp +| | | | | | | `-- relExp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | |-- Ident: getNumPos +| | | | | | | |-- L_PAREN: ( +| | | | | | | |-- funcRParams +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: v +| | | | | | | | |-- Comma: , +| | | | | | | | `-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: bitround +| | | | | | | `-- R_PAREN: ) +| | | | | | |-- NeOp: != +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- R_PAREN: ) +| | | | | `-- stmt +| | | | | `-- block +| | | | | |-- L_BRACE: { +| | | | | |-- blockItem +| | | | | | `-- decl +| | | | | | `-- varDecl +| | | | | | |-- bType +| | | | | | | `-- Int: int +| | | | | | |-- varDef +| | | | | | | |-- Ident: t +| | | | | | | |-- Assign: = +| | | | | | | `-- initVal +| | | | | | | `-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: v +| | | | | | `-- Semi: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | `-- Ident: v +| | | | | | |-- Assign: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: a +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | |-- Ident: head +| | | | | | | | |-- L_BRACKET: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | |-- Ident: getNumPos +| | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | |-- funcRParams +| | | | | | | | | | |-- exp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- lVal +| | | | | | | | | | | `-- Ident: t +| | | | | | | | | | |-- Comma: , +| | | | | | | | | | `-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: bitround +| | | | | | | | | `-- R_PAREN: ) +| | | | | | | | `-- R_BRACKET: ] +| | | | | | | `-- R_BRACKET: ] +| | | | | | `-- Semi: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | |-- Ident: a +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | |-- Ident: head +| | | | | | | | |-- L_BRACKET: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | |-- Ident: getNumPos +| | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | |-- funcRParams +| | | | | | | | | | |-- exp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- lVal +| | | | | | | | | | | `-- Ident: t +| | | | | | | | | | |-- Comma: , +| | | | | | | | | | `-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: bitround +| | | | | | | | | `-- R_PAREN: ) +| | | | | | | | `-- R_BRACKET: ] +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- Assign: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: t +| | | | | | `-- Semi: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | |-- Ident: head +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | |-- Ident: getNumPos +| | | | | | | | |-- L_PAREN: ( +| | | | | | | | |-- funcRParams +| | | | | | | | | |-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: t +| | | | | | | | | |-- Comma: , +| | | | | | | | | `-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: bitround +| | | | | | | | `-- R_PAREN: ) +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- Assign: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | |-- Ident: head +| | | | | | | | |-- L_BRACKET: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | |-- Ident: getNumPos +| | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | |-- funcRParams +| | | | | | | | | | |-- exp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- lVal +| | | | | | | | | | | `-- Ident: t +| | | | | | | | | | |-- Comma: , +| | | | | | | | | | `-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: bitround +| | | | | | | | | `-- R_PAREN: ) +| | | | | | | | `-- R_BRACKET: ] +| | | | | | | |-- AddOp: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- Semi: ; +| | | | | `-- R_BRACE: } +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: a +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: head +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- R_BRACKET: ] +| | | | | | `-- R_BRACKET: ] +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: v +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: head +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: head +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- 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: } +| | `-- R_BRACE: } +| |-- blockItem +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- Int: int +| | | |-- varDef +| | | | |-- Ident: i +| | | | |-- Assign: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: l +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: head +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: l +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: tail +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: l +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: cnt +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- R_BRACKET: ] +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- Assign: = +| | | |-- 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: base +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- If: if +| | | | |-- L_PAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | `-- relExp +| | | | | |-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- GtOp: > +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- R_PAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: head +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: tail +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- SubOp: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- R_BRACKET: ] +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: tail +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: head +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: cnt +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: radixSort +| | | | | |-- L_PAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: bitround +| | | | | | | |-- SubOp: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | |-- Comma: , +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: a +| | | | | | |-- Comma: , +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: head +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- Comma: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: tail +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | `-- 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: } +| | `-- R_BRACE: } +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | `-- Semi: ; +| `-- R_BRACE: } +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: a +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 30000010 +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | `-- Ident: ans +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: n +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getarray +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: radixSort +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 8 +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | `-- R_PAREN: ) +| | `-- 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 +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: ans +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: ans +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- MulOp: * +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | |-- L_PAREN: ( +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: a +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | |-- ModOp: % +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | |-- L_PAREN: ( +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 2 +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- 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 +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: ans +| | | |-- LtOp: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- R_PAREN: ) +| | `-- stmt +| | |-- lVal +| | | `-- Ident: ans +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SubOp: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: ans +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putint +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: ans +| | | `-- 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 +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/performance/2025-MYO-20.tree b/lab1_results/test_case/performance/2025-MYO-20.tree new file mode 100644 index 0000000..b9684c2 --- /dev/null +++ b/lab1_results/test_case/performance/2025-MYO-20.tree @@ -0,0 +1,1843 @@ +compUnit +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: A +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1024 +| | |-- R_BRACKET: ] +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1024 +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: B +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1024 +| | |-- R_BRACKET: ] +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1024 +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- 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: 1024 +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: T +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: R +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- 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: T +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- If: if +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- DivOp: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getarray +| | | | | |-- L_PAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: A +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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 +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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: T +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- If: if +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- GeOp: >= +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- DivOp: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getarray +| | | | | |-- L_PAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: B +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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 +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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: T +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- If: if +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- GeOp: >= +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- DivOp: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- Int: int +| | | | |-- varDef +| | | | | |-- Ident: j +| | | | | |-- 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: j +| | | | | |-- LtOp: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- R_PAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: A +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | |-- unaryOp +| | | | | | | `-- SubOp: - +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: j +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | `-- R_BRACE: } +| | |-- 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 +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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: T +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- If: if +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- DivOp: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- Int: int +| | | | |-- varDef +| | | | | |-- Ident: j +| | | | | |-- 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: j +| | | | | |-- LtOp: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- R_PAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: B +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | |-- unaryOp +| | | | | | | `-- SubOp: - +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: j +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | `-- R_BRACE: } +| | |-- 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 +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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: T +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- Int: int +| | | |-- varDef +| | | | |-- Ident: j +| | | | |-- 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: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: T +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: C +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: A +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- R_BRACKET: ] +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- MulOp: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: B +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | |-- MulOp: * +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 3 +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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 +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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: T +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- Int: int +| | | |-- varDef +| | | | |-- Ident: j +| | | | |-- 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: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: T +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- Int: int +| | | | |-- varDef +| | | | | |-- Ident: val +| | | | | |-- Assign: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: C +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: val +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: val +| | | | | | |-- MulOp: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: val +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 7 +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: val +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: val +| | | | | |-- DivOp: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 3 +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: C +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: val +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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 +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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: T +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- Int: int +| | | |-- varDef +| | | | |-- Ident: j +| | | | |-- 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: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: T +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- Int: int +| | | | |-- varDef +| | | | | |-- Ident: k +| | | | | |-- Assign: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- Int: int +| | | | |-- varDef +| | | | | |-- Ident: sum +| | | | | |-- 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: k +| | | | | |-- LtOp: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- R_PAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: sum +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: sum +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: C +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- R_BRACKET: ] +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: k +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- MulOp: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: A +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: k +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: k +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: k +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: A +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: sum +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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 +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: total +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: r +| | | |-- 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: r +| | | |-- LtOp: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: R +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- Assign: = +| | | |-- 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: T +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- Int: int +| | | | |-- varDef +| | | | | |-- Ident: j +| | | | | |-- 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: j +| | | | | |-- LtOp: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: T +| | | | |-- R_PAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: total +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: total +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: A +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- R_BRACKET: ] +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- MulOp: * +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: A +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: j +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- 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 +| | | |-- lVal +| | | | `-- Ident: r +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: r +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putint +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: total +| | | `-- 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 +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/performance/fft0.tree b/lab1_results/test_case/performance/fft0.tree new file mode 100644 index 0000000..19b198a --- /dev/null +++ b/lab1_results/test_case/performance/fft0.tree @@ -0,0 +1,2173 @@ +compUnit +|-- decl +| `-- constDecl +| |-- Const: const +| |-- bType +| | `-- Int: int +| |-- constDef +| | |-- Ident: mod +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 998244353 +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | `-- Ident: d +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: multiply +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: a +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: b +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: b +| | | |-- EqOp: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- R_PAREN: ) +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: b +| | | |-- EqOp: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | |-- R_PAREN: ) +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | |-- ModOp: % +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: mod +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: cur +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: multiply +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | |-- DivOp: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: cur +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | |-- L_PAREN: ( +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: cur +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: cur +| | | | `-- R_PAREN: ) +| | | |-- ModOp: % +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: mod +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | |-- ModOp: % +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- EqOp: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | |-- R_PAREN: ) +| | |-- stmt +| | | |-- Return: return +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | |-- L_PAREN: ( +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: cur +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: a +| | | | | `-- R_PAREN: ) +| | | | |-- ModOp: % +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: mod +| | | `-- Semi: ; +| | |-- Else: else +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: cur +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: power +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: a +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: b +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: b +| | | |-- EqOp: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- R_PAREN: ) +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: cur +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: power +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | |-- DivOp: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: cur +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: multiply +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: cur +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: cur +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | |-- ModOp: % +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | |-- EqOp: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | |-- R_PAREN: ) +| | |-- stmt +| | | |-- Return: return +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: multiply +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: cur +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | `-- R_PAREN: ) +| | | `-- Semi: ; +| | |-- Else: else +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: cur +| | `-- Semi: ; +| `-- R_BRACE: } +|-- decl +| `-- constDecl +| |-- Const: const +| |-- bType +| | `-- Int: int +| |-- constDef +| | |-- Ident: maxlen +| | |-- Assign: = +| | `-- constInitVal +| | `-- constExp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 2097152 +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: temp +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: maxlen +| | `-- R_BRACKET: ] +| |-- Comma: , +| |-- varDef +| | |-- Ident: a +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: maxlen +| | `-- R_BRACKET: ] +| |-- Comma: , +| |-- varDef +| | |-- Ident: b +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: maxlen +| | `-- R_BRACKET: ] +| |-- Comma: , +| |-- varDef +| | |-- Ident: c +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: maxlen +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: memmove +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | |-- Ident: dst +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: dst_pos +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | |-- Ident: src +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: len +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- 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: len +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: dst +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: dst_pos +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: src +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- 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 +| | | `-- lVal +| | | `-- Ident: i +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: fft +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | |-- Ident: arr +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: begin_pos +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: n +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: w +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- EqOp: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | |-- R_PAREN: ) +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- 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 +| | | `-- stmt +| | | |-- If: if +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | |-- eqExp +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- ModOp: % +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | |-- EqOp: == +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | |-- R_PAREN: ) +| | | |-- stmt +| | | | |-- lVal +| | | | | |-- Ident: temp +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- DivOp: / +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: arr +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: begin_pos +| | | | | `-- R_BRACKET: ] +| | | | `-- Semi: ; +| | | |-- Else: else +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: temp +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: n +| | | | | | |-- DivOp: / +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- DivOp: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: arr +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: begin_pos +| | | | `-- 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 +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: memmove +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: arr +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: begin_pos +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: temp +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: fft +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: arr +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: begin_pos +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- DivOp: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: multiply +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: w +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: w +| | | | `-- R_PAREN: ) +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: fft +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: arr +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: begin_pos +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- DivOp: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- DivOp: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: multiply +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: w +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: w +| | | | `-- R_PAREN: ) +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: wn +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- While: while +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LtOp: < +| | | `-- addExp +| | | `-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- DivOp: / +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 2 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- Int: int +| | | |-- varDef +| | | | |-- Ident: x +| | | | |-- Assign: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: arr +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: begin_pos +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- R_BRACKET: ] +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- Int: int +| | | |-- varDef +| | | | |-- Ident: y +| | | | |-- Assign: = +| | | | `-- initVal +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: arr +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: begin_pos +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- DivOp: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | `-- R_BRACKET: ] +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: arr +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: begin_pos +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | |-- L_PAREN: ( +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: x +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | |-- Ident: multiply +| | | | | | |-- L_PAREN: ( +| | | | | | |-- funcRParams +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: wn +| | | | | | | |-- Comma: , +| | | | | | | `-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: y +| | | | | | `-- R_PAREN: ) +| | | | | `-- R_PAREN: ) +| | | | |-- ModOp: % +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: mod +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: arr +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: begin_pos +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- DivOp: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | |-- L_PAREN: ( +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: x +| | | | | | | |-- SubOp: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | |-- Ident: multiply +| | | | | | | |-- L_PAREN: ( +| | | | | | | |-- funcRParams +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: wn +| | | | | | | | |-- Comma: , +| | | | | | | | `-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: y +| | | | | | | `-- R_PAREN: ) +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: mod +| | | | | `-- R_PAREN: ) +| | | | |-- ModOp: % +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: mod +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: wn +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: multiply +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: wn +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: w +| | | | `-- 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 +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: n +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getarray +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: m +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getarray +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: b +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: d +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- While: while +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: d +| | | |-- LtOp: < +| | | `-- addExp +| | | |-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: n +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: m +| | | |-- SubOp: - +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: d +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: d +| | | | |-- MulOp: * +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: fft +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: d +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: power +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 3 +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | |-- L_PAREN: ( +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: mod +| | | | | | | |-- SubOp: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- R_PAREN: ) +| | | | | |-- DivOp: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: d +| | | | `-- R_PAREN: ) +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: fft +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: b +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: d +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: power +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 3 +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | |-- L_PAREN: ( +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: mod +| | | | | | | |-- SubOp: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- R_PAREN: ) +| | | | | |-- DivOp: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: d +| | | | `-- R_PAREN: ) +| | | `-- R_PAREN: ) +| | `-- 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: d +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: a +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: multiply +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: a +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: b +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- R_BRACKET: ] +| | | | `-- 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 +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: fft +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: a +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: d +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: power +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 3 +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: mod +| | | | | | |-- SubOp: - +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | |-- SubOp: - +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | |-- L_PAREN: ( +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: mod +| | | | | | | |-- SubOp: - +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- R_PAREN: ) +| | | | | |-- DivOp: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: d +| | | | `-- R_PAREN: ) +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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: d +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: a +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: multiply +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: a +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: power +| | | | | |-- L_PAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: d +| | | | | | |-- Comma: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: mod +| | | | | | |-- SubOp: - +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | `-- 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 +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putarray +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: n +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: m +| | | | | |-- SubOp: - +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/performance/gameoflife-oscillator.tree b/lab1_results/test_case/performance/gameoflife-oscillator.tree new file mode 100644 index 0000000..cd72e9f --- /dev/null +++ b/lab1_results/test_case/performance/gameoflife-oscillator.tree @@ -0,0 +1,1810 @@ +compUnit +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: sheet1 +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 500 +| | |-- R_BRACKET: ] +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 500 +| | |-- R_BRACKET: ] +| | |-- Assign: = +| | `-- initVal +| | |-- L_BRACE: { +| | `-- R_BRACE: } +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: sheet2 +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 500 +| | |-- R_BRACKET: ] +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 500 +| | |-- R_BRACKET: ] +| | |-- Assign: = +| | `-- initVal +| | |-- L_BRACE: { +| | `-- R_BRACE: } +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: active +| | |-- Assign: = +| | `-- initVal +| | `-- exp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 1 +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | `-- Ident: width +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | `-- Ident: height +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | `-- Ident: steps +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: read_map +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: width +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: height +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- lVal +| | | `-- Ident: steps +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getch +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: j +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- While: while +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: j +| | | |-- LeOp: <= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: height +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- While: while +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LeOp: <= +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: width +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- Int: int +| | | | |-- varDef +| | | | | |-- Ident: get +| | | | | |-- Assign: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: getch +| | | | | |-- L_PAREN: ( +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- If: if +| | | | |-- L_PAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | |-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: get +| | | | | |-- EqOp: == +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 35 +| | | | |-- R_PAREN: ) +| | | | |-- stmt +| | | | | `-- block +| | | | | |-- L_BRACE: { +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | |-- Ident: sheet1 +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | |-- R_BRACKET: ] +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- Assign: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- Semi: ; +| | | | | `-- R_BRACE: } +| | | | |-- Else: else +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: sheet1 +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 0 +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- 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 +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: getch +| | | | |-- L_PAREN: ( +| | | | `-- R_PAREN: ) +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: put_map +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: j +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- While: while +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: j +| | | |-- LeOp: <= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: height +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- While: while +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LeOp: <= +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: width +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- If: if +| | | | |-- L_PAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | |-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: sheet1 +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | |-- EqOp: == +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | |-- R_PAREN: ) +| | | | |-- stmt +| | | | | `-- block +| | | | | |-- L_BRACE: { +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | |-- Ident: putch +| | | | | | | |-- L_PAREN: ( +| | | | | | | |-- funcRParams +| | | | | | | | `-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 35 +| | | | | | | `-- R_PAREN: ) +| | | | | | `-- Semi: ; +| | | | | `-- R_BRACE: } +| | | | |-- Else: else +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | |-- Ident: putch +| | | | | | |-- L_PAREN: ( +| | | | | | |-- funcRParams +| | | | | | | `-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 46 +| | | | | | `-- R_PAREN: ) +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- 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 +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putch +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 10 +| | | | `-- R_PAREN: ) +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: swap12 +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: j +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- While: while +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: j +| | | |-- LeOp: <= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: height +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- While: while +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LeOp: <= +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: width +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: sheet1 +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: sheet2 +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- 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 +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: step +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | |-- Ident: source +| | | |-- L_BRACKET: [ +| | | |-- R_BRACKET: ] +| | | |-- L_BRACKET: [ +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 500 +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | |-- Ident: target +| | |-- L_BRACKET: [ +| | |-- R_BRACKET: ] +| | |-- L_BRACKET: [ +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 500 +| | `-- R_BRACKET: ] +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: j +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- While: while +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: j +| | | |-- LeOp: <= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: height +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: i +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- While: while +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- LeOp: <= +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: width +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- Int: int +| | | | |-- varDef +| | | | | |-- Ident: alive_count +| | | | | |-- Assign: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | |-- addExp +| | | | | | | |-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | |-- addExp +| | | | | | | | | | |-- addExp +| | | | | | | | | | | |-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | |-- Ident: source +| | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | |-- addExp +| | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | `-- Ident: j +| | | | | | | | | | | | | |-- SubOp: - +| | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | `-- IntConst: 1 +| | | | | | | | | | | | |-- R_BRACKET: ] +| | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | |-- addExp +| | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | |-- SubOp: - +| | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | `-- IntConst: 1 +| | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | |-- AddOp: + +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- lVal +| | | | | | | | | | | |-- Ident: source +| | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | |-- exp +| | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | |-- addExp +| | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | `-- Ident: j +| | | | | | | | | | | | |-- SubOp: - +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- number +| | | | | | | | | | | | `-- IntConst: 1 +| | | | | | | | | | | |-- R_BRACKET: ] +| | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | |-- exp +| | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | |-- AddOp: + +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | |-- Ident: source +| | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | |-- exp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | |-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | `-- Ident: j +| | | | | | | | | | | |-- SubOp: - +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- number +| | | | | | | | | | | `-- IntConst: 1 +| | | | | | | | | | |-- R_BRACKET: ] +| | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | |-- exp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | |-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | |-- AddOp: + +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- number +| | | | | | | | | | | `-- IntConst: 1 +| | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | |-- AddOp: + +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | |-- Ident: source +| | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | |-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: j +| | | | | | | | | |-- R_BRACKET: ] +| | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | |-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | |-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- lVal +| | | | | | | | | | | `-- Ident: i +| | | | | | | | | | |-- SubOp: - +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- number +| | | | | | | | | | `-- IntConst: 1 +| | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | |-- AddOp: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | |-- Ident: source +| | | | | | | | |-- L_BRACKET: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: j +| | | | | | | | |-- R_BRACKET: ] +| | | | | | | | |-- L_BRACKET: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | |-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: i +| | | | | | | | | |-- AddOp: + +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- number +| | | | | | | | | `-- IntConst: 1 +| | | | | | | | `-- R_BRACKET: ] +| | | | | | | |-- AddOp: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: source +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: j +| | | | | | | | |-- AddOp: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 1 +| | | | | | | |-- R_BRACKET: ] +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: i +| | | | | | | | |-- SubOp: - +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 1 +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: source +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | |-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | |-- AddOp: + +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: source +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | |-- R_BRACKET: ] +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- R_BRACKET: ] +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- If: if +| | | | |-- L_PAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | |-- lAndExp +| | | | | | `-- eqExp +| | | | | | |-- eqExp +| | | | | | | `-- relExp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | |-- Ident: source +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | |-- R_BRACKET: ] +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- EqOp: == +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | |-- AndOp: && +| | | | | `-- eqExp +| | | | | |-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: alive_count +| | | | | |-- EqOp: == +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | |-- R_PAREN: ) +| | | | |-- stmt +| | | | | `-- block +| | | | | |-- L_BRACE: { +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | |-- Ident: target +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | |-- R_BRACKET: ] +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- Assign: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- Semi: ; +| | | | | `-- R_BRACE: } +| | | | |-- Else: else +| | | | `-- stmt +| | | | |-- If: if +| | | | |-- L_PAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | |-- eqExp +| | | | | | `-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: alive_count +| | | | | |-- EqOp: == +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 3 +| | | | |-- R_PAREN: ) +| | | | |-- stmt +| | | | | `-- block +| | | | | |-- L_BRACE: { +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | |-- Ident: target +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | |-- R_BRACKET: ] +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- Assign: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 1 +| | | | | | `-- Semi: ; +| | | | | `-- R_BRACE: } +| | | | |-- Else: else +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: target +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- R_BRACKET: ] +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | `-- R_BRACKET: ] +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 0 +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- 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 +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- 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: read_map +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- While: while +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: steps +| | | |-- GtOp: > +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- If: if +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | |-- eqExp +| | | | | `-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: active +| | | | |-- EqOp: == +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- R_PAREN: ) +| | | |-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | |-- Ident: step +| | | | | | |-- L_PAREN: ( +| | | | | | |-- funcRParams +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: sheet1 +| | | | | | | |-- Comma: , +| | | | | | | `-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: sheet2 +| | | | | | `-- R_PAREN: ) +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: active +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- Else: else +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: step +| | | | | |-- L_PAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: sheet2 +| | | | | | |-- Comma: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: sheet1 +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: active +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: steps +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: steps +| | | | |-- SubOp: - +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | |-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: active +| | | |-- EqOp: == +| | | `-- relExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 2 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: swap12 +| | | | |-- L_PAREN: ( +| | | | `-- R_PAREN: ) +| | | `-- Semi: ; +| | `-- R_BRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: put_map +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/performance/if-combine3.tree b/lab1_results/test_case/performance/if-combine3.tree new file mode 100644 index 0000000..4e3031d --- /dev/null +++ b/lab1_results/test_case/performance/if-combine3.tree @@ -0,0 +1,5394 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: func +| |-- L_PAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: n +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: sum +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 200 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: j +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: s +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 100 +| | | `-- R_BRACKET: ] +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: m +| | | |-- 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: m +| | | |-- LtOp: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 100 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: s +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: m +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 0 +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: m +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: m +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| |-- blockItem +| | `-- stmt +| | |-- While: while +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: j +| | | |-- LtOp: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: n +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- If: if +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- GtOp: > +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: s +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- If: if +| | | | |-- L_PAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | `-- relExp +| | | | | |-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- GtOp: > +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 2 +| | | | |-- R_PAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | |-- Ident: s +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 2 +| | | | | | `-- R_BRACKET: ] +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- If: if +| | | | | |-- L_PAREN: ( +| | | | | |-- cond +| | | | | | `-- lOrExp +| | | | | | `-- lAndExp +| | | | | | `-- eqExp +| | | | | | `-- relExp +| | | | | | |-- relExp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- GtOp: > +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 3 +| | | | | |-- R_PAREN: ) +| | | | | `-- stmt +| | | | | `-- block +| | | | | |-- L_BRACE: { +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- lVal +| | | | | | | |-- Ident: s +| | | | | | | |-- L_BRACKET: [ +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 3 +| | | | | | | `-- R_BRACKET: ] +| | | | | | |-- Assign: = +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 3 +| | | | | | `-- Semi: ; +| | | | | |-- blockItem +| | | | | | `-- stmt +| | | | | | |-- If: if +| | | | | | |-- L_PAREN: ( +| | | | | | |-- cond +| | | | | | | `-- lOrExp +| | | | | | | `-- lAndExp +| | | | | | | `-- eqExp +| | | | | | | `-- relExp +| | | | | | | |-- relExp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- GtOp: > +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- number +| | | | | | | `-- IntConst: 4 +| | | | | | |-- R_PAREN: ) +| | | | | | `-- stmt +| | | | | | `-- block +| | | | | | |-- L_BRACE: { +| | | | | | |-- blockItem +| | | | | | | `-- stmt +| | | | | | | |-- lVal +| | | | | | | | |-- Ident: s +| | | | | | | | |-- L_BRACKET: [ +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- number +| | | | | | | | | `-- IntConst: 4 +| | | | | | | | `-- R_BRACKET: ] +| | | | | | | |-- Assign: = +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 4 +| | | | | | | `-- Semi: ; +| | | | | | |-- blockItem +| | | | | | | `-- stmt +| | | | | | | |-- If: if +| | | | | | | |-- L_PAREN: ( +| | | | | | | |-- cond +| | | | | | | | `-- lOrExp +| | | | | | | | `-- lAndExp +| | | | | | | | `-- eqExp +| | | | | | | | `-- relExp +| | | | | | | | |-- relExp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: i +| | | | | | | | |-- GtOp: > +| | | | | | | | `-- addExp +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 5 +| | | | | | | |-- R_PAREN: ) +| | | | | | | `-- stmt +| | | | | | | `-- block +| | | | | | | |-- L_BRACE: { +| | | | | | | |-- blockItem +| | | | | | | | `-- stmt +| | | | | | | | |-- lVal +| | | | | | | | | |-- Ident: s +| | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | |-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- number +| | | | | | | | | | `-- IntConst: 5 +| | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | |-- Assign: = +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- number +| | | | | | | | | `-- IntConst: 5 +| | | | | | | | `-- Semi: ; +| | | | | | | |-- blockItem +| | | | | | | | `-- stmt +| | | | | | | | |-- If: if +| | | | | | | | |-- L_PAREN: ( +| | | | | | | | |-- cond +| | | | | | | | | `-- lOrExp +| | | | | | | | | `-- lAndExp +| | | | | | | | | `-- eqExp +| | | | | | | | | `-- relExp +| | | | | | | | | |-- relExp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: i +| | | | | | | | | |-- GtOp: > +| | | | | | | | | `-- addExp +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- number +| | | | | | | | | `-- IntConst: 6 +| | | | | | | | |-- R_PAREN: ) +| | | | | | | | `-- stmt +| | | | | | | | `-- block +| | | | | | | | |-- L_BRACE: { +| | | | | | | | |-- blockItem +| | | | | | | | | `-- stmt +| | | | | | | | | |-- lVal +| | | | | | | | | | |-- Ident: s +| | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | |-- exp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- number +| | | | | | | | | | | `-- IntConst: 6 +| | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | |-- Assign: = +| | | | | | | | | |-- exp +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- number +| | | | | | | | | | `-- IntConst: 6 +| | | | | | | | | `-- Semi: ; +| | | | | | | | |-- blockItem +| | | | | | | | | `-- stmt +| | | | | | | | | |-- If: if +| | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | |-- cond +| | | | | | | | | | `-- lOrExp +| | | | | | | | | | `-- lAndExp +| | | | | | | | | | `-- eqExp +| | | | | | | | | | `-- relExp +| | | | | | | | | | |-- relExp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- lVal +| | | | | | | | | | | `-- Ident: i +| | | | | | | | | | |-- GtOp: > +| | | | | | | | | | `-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- number +| | | | | | | | | | `-- IntConst: 7 +| | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | `-- stmt +| | | | | | | | | `-- block +| | | | | | | | | |-- L_BRACE: { +| | | | | | | | | |-- blockItem +| | | | | | | | | | `-- stmt +| | | | | | | | | | |-- lVal +| | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | |-- exp +| | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- number +| | | | | | | | | | | | `-- IntConst: 7 +| | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | |-- Assign: = +| | | | | | | | | | |-- exp +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- number +| | | | | | | | | | | `-- IntConst: 7 +| | | | | | | | | | `-- Semi: ; +| | | | | | | | | |-- blockItem +| | | | | | | | | | `-- stmt +| | | | | | | | | | |-- If: if +| | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | |-- cond +| | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | `-- eqExp +| | | | | | | | | | | `-- relExp +| | | | | | | | | | | |-- relExp +| | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | `-- addExp +| | | | | | | | | | | `-- mulExp +| | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | `-- number +| | | | | | | | | | | `-- IntConst: 8 +| | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | `-- stmt +| | | | | | | | | | `-- block +| | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | |-- blockItem +| | | | | | | | | | | `-- stmt +| | | | | | | | | | | |-- lVal +| | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | `-- IntConst: 8 +| | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | |-- exp +| | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- number +| | | | | | | | | | | | `-- IntConst: 8 +| | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | |-- blockItem +| | | | | | | | | | | `-- stmt +| | | | | | | | | | | |-- If: if +| | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | |-- cond +| | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | `-- number +| | | | | | | | | | | | `-- IntConst: 9 +| | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | `-- stmt +| | | | | | | | | | | `-- block +| | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | `-- IntConst: 9 +| | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | `-- IntConst: 9 +| | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | `-- IntConst: 10 +| | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | `-- block +| | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | `-- IntConst: 10 +| | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | `-- IntConst: 10 +| | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | `-- IntConst: 11 +| | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | `-- IntConst: 11 +| | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | `-- IntConst: 11 +| | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | `-- IntConst: 12 +| | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | `-- IntConst: 12 +| | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | `-- IntConst: 12 +| | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | `-- IntConst: 13 +| | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | `-- IntConst: 13 +| | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | `-- IntConst: 13 +| | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | `-- IntConst: 14 +| | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | `-- IntConst: 14 +| | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | `-- IntConst: 14 +| | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | `-- IntConst: 15 +| | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | `-- IntConst: 15 +| | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | `-- IntConst: 15 +| | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | `-- IntConst: 16 +| | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | `-- IntConst: 16 +| | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | `-- IntConst: 16 +| | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | `-- IntConst: 17 +| | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 17 +| | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | `-- IntConst: 17 +| | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | `-- IntConst: 18 +| | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 18 +| | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 18 +| | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 19 +| | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 19 +| | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 19 +| | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 20 +| | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 20 +| | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 20 +| | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 21 +| | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 21 +| | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 21 +| | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 22 +| | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 22 +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 22 +| | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 23 +| | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 23 +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 23 +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 24 +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 24 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 24 +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 25 +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 25 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 25 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 26 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 26 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 26 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 27 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 27 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 27 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 28 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 28 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 28 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 29 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 29 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 29 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 30 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 30 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 30 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 31 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 31 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 31 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 32 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 32 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 32 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 33 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 33 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 33 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 34 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 34 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 34 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 35 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 35 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 35 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 36 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 36 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 36 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 37 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 37 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 37 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 38 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 38 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 38 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 39 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 39 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 39 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 40 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 40 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 40 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 41 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 41 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 41 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 42 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 42 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 42 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 43 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 43 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 43 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 44 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 44 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 44 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 45 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 45 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 45 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 46 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 46 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 46 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 47 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 47 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 47 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 48 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 48 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 48 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 49 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 49 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 49 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 50 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 50 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 50 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 51 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 51 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 51 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 52 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 52 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 52 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 53 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 53 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 53 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 54 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 54 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 54 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 55 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 55 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 55 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 56 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 56 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 56 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 57 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 57 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 57 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 58 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 58 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 58 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 59 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 59 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 59 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 60 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 60 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 60 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 61 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 61 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 61 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 62 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 62 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 62 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 63 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 63 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 63 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 64 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 64 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 64 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 65 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 65 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 65 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 66 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 66 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 66 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 67 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 67 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 67 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 68 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 68 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 68 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 69 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 69 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 69 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 70 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 70 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 70 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 71 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 71 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 71 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 72 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 72 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 72 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 73 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 73 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 73 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 74 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 74 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 74 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 75 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 75 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 75 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 76 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 76 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 76 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 77 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 77 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 77 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 78 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 78 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 78 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 79 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 79 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 79 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 80 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 80 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 80 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 81 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 81 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 81 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 82 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 82 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 82 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 83 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 83 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 83 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 84 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 84 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 84 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 85 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 85 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 85 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 86 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 86 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 86 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 87 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 87 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 87 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 88 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 88 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 88 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 89 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 89 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 89 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 90 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 90 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 90 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 91 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 91 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 91 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 92 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 92 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 92 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 93 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 93 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 93 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 94 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 94 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 94 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 95 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 95 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 95 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 96 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 96 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 96 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 97 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 97 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 97 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 98 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 98 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 98 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- If: if +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_PAREN: ( +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GtOp: > +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 99 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- R_PAREN: ) +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACE: { +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- L_BRACKET: [ +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 99 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACKET: ] +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Assign: = +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 99 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Semi: ; +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | | `-- R_BRACE: } +| | | | | | | | | `-- R_BRACE: } +| | | | | | | | `-- R_BRACE: } +| | | | | | | `-- R_BRACE: } +| | | | | | `-- R_BRACE: } +| | | | | `-- R_BRACE: } +| | | | `-- R_BRACE: } +| | | `-- R_BRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- decl +| | | `-- varDecl +| | | |-- bType +| | | | `-- Int: int +| | | |-- varDef +| | | | |-- Ident: m +| | | | |-- 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: m +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 100 +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: sum +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: sum +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: s +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: m +| | | | | `-- R_BRACKET: ] +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: m +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: m +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: sum +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: sum +| | | | |-- ModOp: % +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 65535 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: sum +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: loopcount +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putint +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: func +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: loopcount +| | | | `-- 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 +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/performance/large_loop_array_2.tree b/lab1_results/test_case/performance/large_loop_array_2.tree new file mode 100644 index 0000000..7236a8c --- /dev/null +++ b/lab1_results/test_case/performance/large_loop_array_2.tree @@ -0,0 +1,779 @@ +compUnit +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: COUNT +| | |-- Assign: = +| | `-- initVal +| | `-- exp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 500000 +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Float: float +| |-- Ident: loop +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Float: float +| | | |-- Ident: x +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Float: float +| | | |-- Ident: y +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: length +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Float: float +| | |-- varDef +| | | |-- Ident: accumulator +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 0.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: length +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: accumulator +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: accumulator +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: x +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- R_BRACKET: ] +| | | | |-- MulOp: * +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: y +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- 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 +| | | `-- lVal +| | | `-- Ident: accumulator +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- Comma: , +| | |-- varDef +| | | |-- Ident: j +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: len +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Float: float +| | |-- varDef +| | | |-- Ident: x +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 4096 +| | | `-- R_BRACKET: ] +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Float: float +| | |-- varDef +| | | |-- Ident: y +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 4096 +| | | `-- R_BRACKET: ] +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Float: float +| | |-- varDef +| | | |-- Ident: total +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 0.0 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Float: float +| | |-- varDef +| | | |-- Ident: a +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 0.0 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Float: float +| | |-- varDef +| | | |-- Ident: b +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 1.0 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- 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: COUNT +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- If: if +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- ModOp: % +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 10 +| | | |-- R_PAREN: ) +| | | |-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: a +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- FloatConst: 0.0 +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: b +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- FloatConst: 1.0 +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- Else: else +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: a +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: a +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- FloatConst: 0.1 +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: b +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: b +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- FloatConst: 0.2 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- While: while +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: len +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: x +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: a +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: y +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: b +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: total +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: total +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: loop +| | | | |-- 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 +| | | | | `-- lVal +| | | | | `-- Ident: len +| | | | `-- 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 +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | |-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | |-- L_PAREN: ( +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: total +| | | | | | |-- SubOp: - +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- FloatConst: 11442437121638400.000000 +| | | | | `-- R_PAREN: ) +| | | | |-- LeOp: <= +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 0.000001 +| | | |-- OrOp: || +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | |-- L_PAREN: ( +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: total +| | | | | |-- SubOp: - +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- FloatConst: 11442437121638400.000000 +| | | | `-- R_PAREN: ) +| | | |-- GeOp: >= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SubOp: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 0.000001 +| | |-- R_PAREN: ) +| | |-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: putint +| | | | | |-- L_PAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 0 +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- Return: return +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- Else: else +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putint +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- R_PAREN: ) +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- Return: return +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/performance/transpose0.tree b/lab1_results/test_case/performance/transpose0.tree new file mode 100644 index 0000000..fd041b4 --- /dev/null +++ b/lab1_results/test_case/performance/transpose0.tree @@ -0,0 +1,890 @@ +compUnit +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: matrix +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 20000000 +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- decl +| `-- varDecl +| |-- bType +| | `-- Int: int +| |-- varDef +| | |-- Ident: a +| | |-- L_BRACKET: [ +| | |-- constExp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 100000 +| | `-- R_BRACKET: ] +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: transpose +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: n +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | |-- Ident: matrix +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: rowsize +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: colsize +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | |-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- DivOp: / +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: rowsize +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: j +| | | |-- 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: colsize +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: j +| | | |-- Assign: = +| | | |-- 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: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: rowsize +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- If: if +| | | | |-- L_PAREN: ( +| | | | |-- cond +| | | | | `-- lOrExp +| | | | | `-- lAndExp +| | | | | `-- eqExp +| | | | | `-- relExp +| | | | | |-- relExp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- LtOp: < +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- R_PAREN: ) +| | | | `-- stmt +| | | | `-- block +| | | | |-- L_BRACE: { +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- lVal +| | | | | | `-- Ident: j +| | | | | |-- Assign: = +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- Semi: ; +| | | | |-- blockItem +| | | | | `-- stmt +| | | | | |-- Continue: continue +| | | | | `-- Semi: ; +| | | | `-- R_BRACE: } +| | | |-- blockItem +| | | | `-- decl +| | | | `-- varDecl +| | | | |-- bType +| | | | | `-- Int: int +| | | | |-- varDef +| | | | | |-- Ident: curr +| | | | | |-- Assign: = +| | | | | `-- initVal +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: matrix +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- MulOp: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: rowsize +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: matrix +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: j +| | | | | | | |-- MulOp: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: colsize +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: matrix +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- MulOp: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: rowsize +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | |-- Ident: matrix +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- lVal +| | | | | | | | `-- Ident: i +| | | | | | | |-- MulOp: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: rowsize +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_BRACKET: ] +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: curr +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- 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 +| | | |-- unaryOp +| | | | `-- SubOp: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 1 +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: n +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getint +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: len +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: getarray +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: a +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- 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 +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: matrix +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | `-- 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 +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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: len +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: transpose +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- Comma: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: matrix +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: a +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- R_BRACKET: ] +| | | | `-- 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 +| | `-- 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 +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: i +| | | |-- LtOp: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: len +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: ans +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: ans +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | |-- MulOp: * +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- MulOp: * +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: matrix +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- 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 +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: ans +| | | |-- LtOp: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- R_PAREN: ) +| | `-- stmt +| | |-- lVal +| | | `-- Ident: ans +| | |-- Assign: = +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SubOp: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: ans +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: putint +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: ans +| | | `-- 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 +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/lab1_results/test_case/performance/vector_mul3.tree b/lab1_results/test_case/performance/vector_mul3.tree new file mode 100644 index 0000000..76cb013 --- /dev/null +++ b/lab1_results/test_case/performance/vector_mul3.tree @@ -0,0 +1,1573 @@ +compUnit +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: func +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: i +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: j +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | |-- L_PAREN: ( +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | |-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | |-- L_PAREN: ( +| | | | | | | | |-- exp +| | | | | | | | | `-- addExp +| | | | | | | | | |-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: i +| | | | | | | | | |-- AddOp: + +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: j +| | | | | | | | `-- R_PAREN: ) +| | | | | | | |-- MulOp: * +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | |-- L_PAREN: ( +| | | | | | | |-- exp +| | | | | | | | `-- addExp +| | | | | | | | |-- addExp +| | | | | | | | | |-- addExp +| | | | | | | | | | `-- mulExp +| | | | | | | | | | `-- unaryExp +| | | | | | | | | | `-- primaryExp +| | | | | | | | | | `-- lVal +| | | | | | | | | | `-- Ident: i +| | | | | | | | | |-- AddOp: + +| | | | | | | | | `-- mulExp +| | | | | | | | | `-- unaryExp +| | | | | | | | | `-- primaryExp +| | | | | | | | | `-- lVal +| | | | | | | | | `-- Ident: j +| | | | | | | | |-- AddOp: + +| | | | | | | | `-- mulExp +| | | | | | | | `-- unaryExp +| | | | | | | | `-- primaryExp +| | | | | | | | `-- number +| | | | | | | | `-- IntConst: 1 +| | | | | | | `-- R_PAREN: ) +| | | | | | |-- DivOp: / +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 2 +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Float: float +| |-- Ident: Vectordot +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Float: float +| | | |-- Ident: v +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Float: float +| | | |-- Ident: u +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: n +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Float: float +| | |-- varDef +| | | |-- Ident: sum +| | | |-- 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 +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: sum +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: sum +| | | | |-- AddOp: + +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | |-- Ident: v +| | | | | |-- L_BRACKET: [ +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- R_BRACKET: ] +| | | | |-- MulOp: * +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | |-- Ident: u +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- 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 +| | | `-- lVal +| | | `-- Ident: sum +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: mult1 +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Float: float +| | | |-- Ident: v +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Float: float +| | | |-- Ident: out +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: n +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- Comma: , +| | |-- varDef +| | | |-- Ident: j +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Float: float +| | |-- varDef +| | | |-- Ident: sum +| | | |-- 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 +| | | `-- stmt +| | | |-- While: while +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: sum +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: sum +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: v +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | |-- DivOp: / +| | | | | `-- unaryExp +| | | | | |-- Ident: func +| | | | | |-- L_PAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: i +| | | | | | |-- Comma: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: out +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: sum +| | | `-- 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: } +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: mult2 +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Float: float +| | | |-- Ident: v +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Float: float +| | | |-- Ident: out +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Int: int +| | `-- Ident: n +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: i +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- Comma: , +| | |-- varDef +| | | |-- Ident: j +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Float: float +| | |-- varDef +| | | |-- Ident: sum +| | | |-- 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 +| | | `-- stmt +| | | |-- While: while +| | | |-- L_PAREN: ( +| | | |-- cond +| | | | `-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: j +| | | | |-- LtOp: < +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- R_PAREN: ) +| | | `-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: sum +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: sum +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | |-- Ident: v +| | | | | | |-- L_BRACKET: [ +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | `-- R_BRACKET: ] +| | | | | |-- DivOp: / +| | | | | `-- unaryExp +| | | | | |-- Ident: func +| | | | | |-- L_PAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: j +| | | | | | |-- Comma: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: i +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- lVal +| | | | | `-- Ident: j +| | | | |-- Assign: = +| | | | |-- exp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: j +| | | | | |-- AddOp: + +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 1 +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: out +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: sum +| | | `-- 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: } +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Void: void +| |-- Ident: mult_combin +| |-- L_PAREN: ( +| |-- funcFParams +| | |-- funcFParam +| | | |-- bType +| | | | `-- Float: float +| | | |-- Ident: v +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Float: float +| | | |-- Ident: out +| | | |-- L_BRACKET: [ +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- funcFParam +| | | |-- bType +| | | | `-- Int: int +| | | `-- Ident: n +| | |-- Comma: , +| | `-- funcFParam +| | |-- bType +| | | `-- Float: float +| | |-- Ident: tmp +| | |-- L_BRACKET: [ +| | `-- R_BRACKET: ] +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: mult1 +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: v +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: tmp +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: mult2 +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: tmp +| | | | |-- Comma: , +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: out +| | | | |-- Comma: , +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| `-- R_BRACE: } +|-- decl +| `-- varDecl +| |-- bType +| | `-- Float: float +| |-- varDef +| | |-- Ident: temp +| | |-- Assign: = +| | `-- initVal +| | `-- exp +| | `-- addExp +| | `-- mulExp +| | `-- unaryExp +| | `-- primaryExp +| | `-- number +| | `-- IntConst: 1 +| `-- Semi: ; +|-- funcDef +| |-- funcType +| | `-- Float: float +| |-- Ident: my_sqrt +| |-- L_PAREN: ( +| |-- funcFParams +| | `-- funcFParam +| | |-- bType +| | | `-- Float: float +| | `-- Ident: input +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- stmt +| | |-- While: while +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | |-- lOrExp +| | | | `-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: temp +| | | | | |-- SubOp: - +| | | | | `-- mulExp +| | | | | |-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: input +| | | | | |-- DivOp: / +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: temp +| | | | |-- GtOp: > +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 1e-6 +| | | |-- OrOp: || +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: temp +| | | | |-- SubOp: - +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: input +| | | | |-- DivOp: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: temp +| | | |-- LtOp: < +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SubOp: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 1e-6 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: temp +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | |-- L_PAREN: ( +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | |-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: temp +| | | | | | |-- AddOp: + +| | | | | | `-- mulExp +| | | | | | |-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: input +| | | | | | |-- DivOp: / +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: temp +| | | | | `-- R_PAREN: ) +| | | | |-- DivOp: / +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| |-- blockItem +| | `-- stmt +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- lVal +| | | `-- Ident: temp +| | `-- Semi: ; +| `-- R_BRACE: } +|-- funcDef +| |-- funcType +| | `-- Int: int +| |-- Ident: main +| |-- L_PAREN: ( +| |-- R_PAREN: ) +| `-- block +| |-- L_BRACE: { +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | |-- Ident: n +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 100000 +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- lVal +| | | | `-- Ident: n +| | | |-- LeOp: <= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- lVal +| | | | `-- Ident: n +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 2000 +| | | `-- Semi: ; +| | `-- R_BRACE: } +| |-- blockItem +| | `-- stmt +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: starttime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Float: float +| | |-- varDef +| | | |-- Ident: vectorA +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 100000 +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- varDef +| | | |-- Ident: vectorB +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 100000 +| | | `-- R_BRACKET: ] +| | |-- Comma: , +| | |-- varDef +| | | |-- Ident: Vectortmp +| | | |-- L_BRACKET: [ +| | | |-- constExp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 100000 +| | | `-- R_BRACKET: ] +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Int: int +| | |-- varDef +| | | `-- Ident: i +| | `-- 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 +| | | `-- stmt +| | | |-- lVal +| | | | |-- Ident: vectorA +| | | | |-- L_BRACKET: [ +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: i +| | | | `-- R_BRACKET: ] +| | | |-- Assign: = +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- IntConst: 1 +| | | `-- 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 +| | |-- lVal +| | | `-- Ident: i +| | |-- Assign: = +| | |-- 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 +| | | `-- number +| | | `-- IntConst: 1000 +| | |-- R_PAREN: ) +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: mult_combin +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorA +| | | | | |-- Comma: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorB +| | | | | |-- Comma: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: Vectortmp +| | | | `-- R_PAREN: ) +| | | `-- Semi: ; +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: mult_combin +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorB +| | | | | |-- Comma: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorA +| | | | | |-- Comma: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: Vectortmp +| | | | `-- 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 +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: stoptime +| | | |-- L_PAREN: ( +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- decl +| | `-- varDecl +| | |-- bType +| | | `-- Float: float +| | |-- varDef +| | | |-- Ident: result +| | | |-- Assign: = +| | | `-- initVal +| | | `-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- Ident: my_sqrt +| | | |-- L_PAREN: ( +| | | |-- funcRParams +| | | | `-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | |-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: Vectordot +| | | | | |-- L_PAREN: ( +| | | | | |-- funcRParams +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: vectorA +| | | | | | |-- Comma: , +| | | | | | |-- exp +| | | | | | | `-- addExp +| | | | | | | `-- mulExp +| | | | | | | `-- unaryExp +| | | | | | | `-- primaryExp +| | | | | | | `-- lVal +| | | | | | | `-- Ident: vectorB +| | | | | | |-- Comma: , +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: n +| | | | | `-- R_PAREN: ) +| | | | |-- DivOp: / +| | | | `-- unaryExp +| | | | |-- Ident: Vectordot +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorB +| | | | | |-- Comma: , +| | | | | |-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: vectorB +| | | | | |-- Comma: , +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: n +| | | | `-- R_PAREN: ) +| | | `-- R_PAREN: ) +| | `-- Semi: ; +| |-- blockItem +| | `-- stmt +| | |-- If: if +| | |-- L_PAREN: ( +| | |-- cond +| | | `-- lOrExp +| | | `-- lAndExp +| | | |-- lAndExp +| | | | `-- eqExp +| | | | `-- relExp +| | | | |-- relExp +| | | | | `-- addExp +| | | | | |-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- lVal +| | | | | | `-- Ident: result +| | | | | |-- SubOp: - +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- FloatConst: 1.000000 +| | | | |-- LeOp: <= +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 1e-6 +| | | |-- AndOp: && +| | | `-- eqExp +| | | `-- relExp +| | | |-- relExp +| | | | `-- addExp +| | | | |-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- lVal +| | | | | `-- Ident: result +| | | | |-- SubOp: - +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | `-- primaryExp +| | | | `-- number +| | | | `-- FloatConst: 1.000000 +| | | |-- GeOp: >= +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | |-- unaryOp +| | | | `-- SubOp: - +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- FloatConst: 1e-6 +| | |-- R_PAREN: ) +| | |-- stmt +| | | `-- block +| | | |-- L_BRACE: { +| | | |-- blockItem +| | | | `-- stmt +| | | | |-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | |-- Ident: putint +| | | | | |-- L_PAREN: ( +| | | | | |-- funcRParams +| | | | | | `-- exp +| | | | | | `-- addExp +| | | | | | `-- mulExp +| | | | | | `-- unaryExp +| | | | | | `-- primaryExp +| | | | | | `-- number +| | | | | | `-- IntConst: 1 +| | | | | `-- R_PAREN: ) +| | | | `-- Semi: ; +| | | `-- R_BRACE: } +| | |-- Else: else +| | `-- stmt +| | `-- block +| | |-- L_BRACE: { +| | |-- blockItem +| | | `-- stmt +| | | |-- exp +| | | | `-- addExp +| | | | `-- mulExp +| | | | `-- unaryExp +| | | | |-- Ident: putint +| | | | |-- L_PAREN: ( +| | | | |-- funcRParams +| | | | | `-- exp +| | | | | `-- addExp +| | | | | `-- mulExp +| | | | | `-- unaryExp +| | | | | `-- primaryExp +| | | | | `-- number +| | | | | `-- IntConst: 0 +| | | | `-- R_PAREN: ) +| | | `-- 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 +| | |-- Return: return +| | |-- exp +| | | `-- addExp +| | | `-- mulExp +| | | `-- unaryExp +| | | `-- primaryExp +| | | `-- number +| | | `-- IntConst: 0 +| | `-- Semi: ; +| `-- R_BRACE: } +`-- EOF: diff --git a/src/antlr4/SysY.g4 b/src/antlr4/SysY.g4 index 263aeef..dfe9c3f 100644 --- a/src/antlr4/SysY.g4 +++ b/src/antlr4/SysY.g4 @@ -3,96 +3,226 @@ // 的最小返回表达式编译。 // 后续需要自行添加 - grammar SysY; -/*===-------------------------------------------===*/ -/* Lexer rules */ -/*===-------------------------------------------===*/ - -INT: 'int'; -RETURN: 'return'; +compUnit + : (funcDef|decl)+ EOF + ; -ASSIGN: '='; -ADD: '+'; +funcDef + : funcType Ident L_PAREN (funcFParams)? R_PAREN block + ; -LPAREN: '('; -RPAREN: ')'; -LBRACE: '{'; -RBRACE: '}'; -SEMICOLON: ';'; +funcType + : Void | Int | Float + ; -ID: [a-zA-Z_][a-zA-Z_0-9]*; -ILITERAL: [0-9]+; +funcFParams + : funcFParam (Comma funcFParam)* + ; -WS: [ \t\r\n] -> skip; -LINECOMMENT: '//' ~[\r\n]* -> skip; -BLOCKCOMMENT: '/*' .*? '*/' -> skip; +funcFParam + : bType Ident (L_BRACKET R_BRACKET (L_BRACKET exp R_BRACKET)*)? + ; -/*===-------------------------------------------===*/ -/* Syntax rules */ -/*===-------------------------------------------===*/ +block + : L_BRACE (blockItem)* R_BRACE + ; -compUnit - : funcDef EOF +blockItem + : decl + | stmt ; decl - : btype varDef SEMICOLON + : varDecl | constDecl ; -btype - : INT +constDecl + : Const bType constDef (Comma constDef)* Semi ; -varDef - : lValue (ASSIGN initValue)? +bType + : Int | Float ; -initValue - : exp +constDef + : Ident (L_BRACKET constExp R_BRACKET)* Assign constInitVal ; -funcDef - : funcType ID LPAREN RPAREN blockStmt +constInitVal + : constExp + | L_BRACE ( constInitVal (Comma constInitVal)* )? R_BRACE ; -funcType - : INT +stmt + : lVal Assign exp Semi + | (exp)? Semi + | block + | If L_PAREN cond R_PAREN stmt ( Else stmt )? + | While L_PAREN cond R_PAREN stmt + | Break Semi + | Continue Semi + | Return (exp)? Semi ; -blockStmt - : LBRACE blockItem* RBRACE +cond + : lOrExp ; -blockItem - : decl - | stmt +lVal + : Ident (L_BRACKET exp R_BRACKET)* ; -stmt - : returnStmt +primaryExp + : L_PAREN exp R_PAREN | lVal | number + ; + +number + : IntConst | FloatConst + ; + +unaryExp + : primaryExp + | Ident L_PAREN (funcRParams)? R_PAREN + | unaryOp unaryExp + ; + +unaryOp + : AddOp | SubOp | NotOp + ; + +funcRParams + : exp (Comma exp)* ; -returnStmt - : RETURN exp SEMICOLON +mulExp + : unaryExp | mulExp (MulOp | DivOp | ModOp) unaryExp + ; + +addExp + : mulExp | addExp (AddOp | SubOp) mulExp + ; + +relExp + : addExp | relExp (LtOp | GtOp | LeOp | GeOp) addExp + ; + +eqExp + : relExp | eqExp (EqOp | NeOp) relExp + ; + +lAndExp + : eqExp | lAndExp AndOp eqExp + ; + +lOrExp + : lAndExp | lOrExp OrOp lAndExp + ; + +constExp + : addExp + ; + +varDecl + : bType varDef (Comma varDef)* Semi + ; + +varDef + : Ident (L_BRACKET constExp R_BRACKET)* + | Ident (L_BRACKET constExp R_BRACKET)* Assign initVal + ; + +initVal + : exp | L_BRACE ( initVal (Comma initVal)* )? R_BRACE ; exp - : LPAREN exp RPAREN # parenExp - | var # varExp - | number # numberExp - | exp ADD exp # additiveExp + : addExp ; -var - : ID +// 关键字 +Void : 'void'; +Int : 'int'; +Float : 'float'; +Const : 'const'; +If : 'if'; +Else : 'else'; +While : 'while'; +Break : 'break'; +Continue : 'continue'; +Return : 'return'; + +// 符号 +AddOp : '+'; +SubOp : '-'; +Assign : '='; +MulOp : '*'; +DivOp : '/'; +ModOp : '%'; +NotOp : '!'; +AndOp : '&&'; +OrOp : '||'; +EqOp : '=='; +NeOp : '!='; +LtOp : '<'; +GtOp : '>'; +LeOp : '<='; +GeOp : '>='; +Semi : ';'; +Comma : ','; +L_PAREN : '('; +R_PAREN : ')'; +L_BRACE : '{'; +R_BRACE : '}'; +L_BRACKET: '['; +R_BRACKET: ']'; + +Ident + : [a-zA-Z_][a-zA-Z_0-9]* ; -lValue - : ID +IntConst + : '0' [xX] [0-9a-fA-F]+ + | '0' [0-7]* + | [1-9] [0-9]* ; -number - : ILITERAL +FloatConst + : DecFloatConst + | HexFloatConst + ; +fragment DecFloatConst + : DecFrac DecExp? + | [0-9]+ DecExp + ; +fragment DecFrac + : [0-9]+ '.' [0-9]* + | '.' [0-9]+ + ; +fragment DecExp + : [eE] [+\-]? [0-9]+ + ; +fragment HexFloatConst + : '0' [xX] HexFrac BinExp + | '0' [xX] [0-9a-fA-F]+ BinExp ; +fragment HexFrac + : [0-9a-fA-F]+ '.' [0-9a-fA-F]* + | '.' [0-9a-fA-F]+ + ; +fragment BinExp + : [pP] [+\-]? [0-9]+ + ; + +WS + : [ \t\r\n]+ -> skip + ; + +COMMENT + : '//' ~[\r\n]* -> skip + ; + +BLOCK_COMMENT + : '/*' .*? '*/' -> skip + ; \ No newline at end of file diff --git a/test1.sh b/test1.sh new file mode 100755 index 0000000..d459709 --- /dev/null +++ b/test1.sh @@ -0,0 +1,276 @@ +#!/bin/bash +# batch_parse_tree.sh - 批量生成SysY文件的语法树 + +# 设置颜色输出 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# 默认配置 +TEST_DIR="./test" # 测试文件目录 +OUTPUT_DIR="./lab1_results" # 输出目录 +COMPILER="./build/bin/compiler" # 编译器路径 +COMPILER_OPT="--emit-parse-tree" # 编译器选项 +VERBOSE=false # 是否显示详细信息 +OVERWRITE=false # 是否覆盖已存在的文件 + +# 显示帮助信息 +show_help() { + cat << EOF +用法: $0 [选项] + +选项: + -d, --dir DIR 指定测试文件目录 (默认: ./test) + -o, --output DIR 指定输出目录 (默认: ./parse_trees) + -c, --compiler FILE 指定编译器路径 (默认: ./build/bin/compiler) + -v, --verbose 显示详细信息 + -f, --force 覆盖已存在的输出文件 + -h, --help 显示帮助信息 + +示例: + $0 # 使用默认配置 + $0 -d ./testcases -o ./output # 指定目录 + $0 -v -f # 显示详细信息并覆盖已有文件 +EOF +} + +# 解析命令行参数 +while [[ $# -gt 0 ]]; do + case $1 in + -d|--dir) + TEST_DIR="$2" + shift 2 + ;; + -o|--output) + OUTPUT_DIR="$2" + shift 2 + ;; + -c|--compiler) + COMPILER="$2" + shift 2 + ;; + -v|--verbose) + VERBOSE=true + shift + ;; + -f|--force) + OVERWRITE=true + shift + ;; + -h|--help) + show_help + exit 0 + ;; + *) + echo -e "${RED}错误: 未知选项 $1${NC}" + show_help + exit 1 + ;; + esac +done + +# 检查编译器是否存在 +if [ ! -f "$COMPILER" ]; then + echo -e "${RED}错误: 编译器不存在: $COMPILER${NC}" + echo -e "${YELLOW}提示: 请先编译项目或指定正确的编译器路径${NC}" + exit 1 +fi + +# 检查测试目录是否存在 +if [ ! -d "$TEST_DIR" ]; then + echo -e "${RED}错误: 测试目录不存在: $TEST_DIR${NC}" + exit 1 +fi + +# 创建输出目录 +mkdir -p "$OUTPUT_DIR" + +# 统计变量 +TOTAL=0 +SUCCESS=0 +FAILED=0 +SKIPPED=0 + +# 创建日志文件 +LOG_FILE="$OUTPUT_DIR/batch_parse.log" +echo "批量语法树生成日志 - $(date)" > "$LOG_FILE" +echo "==========================================" >> "$LOG_FILE" + +# 查找所有.sy文件 +echo -e "${BLUE}========================================${NC}" +echo -e "${BLUE}开始批量生成语法树${NC}" +echo -e "${BLUE}测试目录: $TEST_DIR${NC}" +echo -e "${BLUE}输出目录: $OUTPUT_DIR${NC}" +echo -e "${BLUE}编译器: $COMPILER${NC}" +echo -e "${BLUE}========================================${NC}" + +# 使用find命令查找所有.sy文件 +while IFS= read -r -d '' file; do + TOTAL=$((TOTAL + 1)) + + # 获取相对路径和文件名 + rel_path="${file#$TEST_DIR/}" + filename=$(basename "$file") + dir_path=$(dirname "$rel_path") + + # 创建对应的输出目录 + target_dir="$OUTPUT_DIR/$dir_path" + mkdir -p "$target_dir" + + # 输出文件名 + base_name="${filename%.sy}" + output_file="$target_dir/${base_name}.tree" + error_file="$target_dir/${base_name}.err" + + # 检查文件是否已存在 + if [ -f "$output_file" ] && [ "$OVERWRITE" = false ]; then + echo -e "${YELLOW}[跳过] $rel_path (已存在)${NC}" + echo "[SKIP] $file -> $output_file (已存在)" >> "$LOG_FILE" + SKIPPED=$((SKIPPED + 1)) + continue + fi + + # 显示进度 + if [ "$VERBOSE" = true ]; then + echo -e "${YELLOW}[$TOTAL] 处理: $rel_path${NC}" + else + echo -ne "${YELLOW}[$TOTAL] 处理: $filename ... ${NC}" + fi + + # 执行编译器命令 + "$COMPILER" $COMPILER_OPT "$file" > "$output_file" 2> "$error_file" + exit_code=$? + + # 检查结果 + if [ $exit_code -eq 0 ] && [ -s "$output_file" ]; then + if [ "$VERBOSE" = false ]; then + echo -e "${GREEN}✓ 成功${NC}" + else + echo -e "${GREEN}✓ 成功 - 输出: $output_file${NC}" + fi + echo "[SUCCESS] $file -> $output_file" >> "$LOG_FILE" + SUCCESS=$((SUCCESS + 1)) + + # 如果错误文件为空,删除它 + if [ ! -s "$error_file" ]; then + rm -f "$error_file" + fi + else + if [ "$VERBOSE" = false ]; then + echo -e "${RED}✗ 失败${NC}" + else + echo -e "${RED}✗ 失败 - 错误: $error_file${NC}" + fi + echo "[FAILED] $file (exit code: $exit_code)" >> "$LOG_FILE" + cat "$error_file" >> "$LOG_FILE" + echo "----------------------------------------" >> "$LOG_FILE" + FAILED=$((FAILED + 1)) + fi + +done < <(find "$TEST_DIR" -type f -name "*.sy" -print0) + +# 输出统计信息 +echo -e "${BLUE}========================================${NC}" +echo -e "${BLUE}处理完成${NC}" +echo -e "${GREEN}成功: $SUCCESS${NC}" +echo -e "${RED}失败: $FAILED${NC}" +echo -e "${YELLOW}跳过: $SKIPPED${NC}" +echo -e "${BLUE}总计: $TOTAL${NC}" +echo -e "${BLUE}========================================${NC}" +echo -e "${BLUE}日志文件: $LOG_FILE${NC}" + +# 如果有失败的文件,列出它们 +if [ $FAILED -gt 0 ]; then + echo -e "\n${RED}失败的文件列表:${NC}" + grep "\[FAILED\]" "$LOG_FILE" | while read -r line; do + echo " $line" + done +fi + +# 生成汇总报告 +REPORT_FILE="$OUTPUT_DIR/report.html" +cat > "$REPORT_FILE" << EOF + + + + 语法树生成报告 + + + +

SysY语法树生成报告

+
+

统计信息

+

生成时间: $(date)

+

测试目录: $TEST_DIR

+

输出目录: $OUTPUT_DIR

+

总计: $TOTAL

+

成功: $SUCCESS

+

失败: $FAILED

+

跳过: $SKIPPED

+

成功率: $((SUCCESS * 100 / TOTAL))%

+
+ +

详细结果

+ + + + + + + +EOF + +# 遍历所有文件生成报告 +find "$TEST_DIR" -type f -name "*.sy" -print0 | while IFS= read -r -d '' file; do + rel_path="${file#$TEST_DIR/}" + filename=$(basename "$file") + base_name="${filename%.sy}" + dir_path=$(dirname "$rel_path") + + output_file="$OUTPUT_DIR/$dir_path/${base_name}.tree" + error_file="$OUTPUT_DIR/$dir_path/${base_name}.err" + + status="成功" + status_class="success" + error_msg="-" + + if [ ! -f "$output_file" ] || [ ! -s "$output_file" ]; then + status="失败" + status_class="failure" + if [ -f "$error_file" ] && [ -s "$error_file" ]; then + error_msg=$(head -1 "$error_file" | sed 's/&/\&/g; s//\>/g') + fi + fi + + cat >> "$REPORT_FILE" << EOF + + + + + + +EOF +done + +cat >> "$REPORT_FILE" << EOF +
文件状态输出文件错误信息
$rel_path$status${base_name}.tree$error_msg
+ + +EOF + +echo -e "${GREEN}HTML报告已生成: $REPORT_FILE${NC}" \ No newline at end of file