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 @@
+
+
+
+
+
+
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: