forked from NUDT-compiler/nudt-compiler-cpp
parent
be143f5326
commit
c400afaffe
@ -0,0 +1,170 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>语法树生成报告</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; margin: 20px; }
|
||||
h1 { color: #333; }
|
||||
.summary { background: #f0f0f0; padding: 10px; border-radius: 5px; }
|
||||
.success { color: green; }
|
||||
.failure { color: red; }
|
||||
.skipped { color: orange; }
|
||||
table { border-collapse: collapse; width: 100%; }
|
||||
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
|
||||
th { background-color: #4CAF50; color: white; }
|
||||
tr:nth-child(even) { background-color: #f2f2f2; }
|
||||
.file-link { text-decoration: none; color: #0066cc; }
|
||||
.file-link:hover { text-decoration: underline; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>SysY语法树生成报告</h1>
|
||||
<div class="summary">
|
||||
<h2>统计信息</h2>
|
||||
<p>生成时间: Thu Mar 19 19:32:48 CST 2026</p>
|
||||
<p>测试目录: ./test</p>
|
||||
<p>输出目录: ./lab1_results</p>
|
||||
<p>总计: 21</p>
|
||||
<p>成功: <span class="success">21</span></p>
|
||||
<p>失败: <span class="failure">0</span></p>
|
||||
<p>跳过: <span class="skipped">0</span></p>
|
||||
<p>成功率: 100%</p>
|
||||
</div>
|
||||
|
||||
<h2>详细结果</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<th>文件</th>
|
||||
<th>状态</th>
|
||||
<th>输出文件</th>
|
||||
<th>错误信息</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/performance/02_mv3.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/performance/02_mv3.tree" class="file-link">02_mv3.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/performance/03_sort1.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/performance/03_sort1.tree" class="file-link">03_sort1.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/performance/if-combine3.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/performance/if-combine3.tree" class="file-link">if-combine3.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/performance/01_mm2.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/performance/01_mm2.tree" class="file-link">01_mm2.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/performance/vector_mul3.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/performance/vector_mul3.tree" class="file-link">vector_mul3.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/performance/large_loop_array_2.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/performance/large_loop_array_2.tree" class="file-link">large_loop_array_2.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/performance/2025-MYO-20.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/performance/2025-MYO-20.tree" class="file-link">2025-MYO-20.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/performance/gameoflife-oscillator.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/performance/gameoflife-oscillator.tree" class="file-link">gameoflife-oscillator.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/performance/fft0.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/performance/fft0.tree" class="file-link">fft0.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/performance/transpose0.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/performance/transpose0.tree" class="file-link">transpose0.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/functional/05_arr_defn4.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/functional/05_arr_defn4.tree" class="file-link">05_arr_defn4.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/functional/15_graph_coloring.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/functional/15_graph_coloring.tree" class="file-link">15_graph_coloring.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/functional/29_break.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/functional/29_break.tree" class="file-link">29_break.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/functional/simple_add.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/functional/simple_add.tree" class="file-link">simple_add.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/functional/95_float.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/functional/95_float.tree" class="file-link">95_float.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/functional/13_sub2.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/functional/13_sub2.tree" class="file-link">13_sub2.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/functional/11_add2.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/functional/11_add2.tree" class="file-link">11_add2.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/functional/22_matrix_multiply.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/functional/22_matrix_multiply.tree" class="file-link">22_matrix_multiply.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/functional/25_scope3.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/functional/25_scope3.tree" class="file-link">25_scope3.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/functional/09_func_defn.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/functional/09_func_defn.tree" class="file-link">09_func_defn.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test_case/functional/36_op_priority2.sy</td>
|
||||
<td class="success">成功</td>
|
||||
<td><a href="test_case/functional/36_op_priority2.tree" class="file-link">36_op_priority2.tree</a></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
@ -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: <EOF>
|
||||
@ -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: <EOF>
|
||||
@ -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: <EOF>
|
||||
@ -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: <EOF>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -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: <EOF>
|
||||
@ -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: <EOF>
|
||||
@ -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: <EOF>
|
||||
File diff suppressed because it is too large
Load Diff
@ -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: <EOF>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -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: <EOF>
|
||||
@ -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: <EOF>
|
||||
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>语法树生成报告</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; margin: 20px; }
|
||||
h1 { color: #333; }
|
||||
.summary { background: #f0f0f0; padding: 10px; border-radius: 5px; }
|
||||
.success { color: green; }
|
||||
.failure { color: red; }
|
||||
.skipped { color: orange; }
|
||||
table { border-collapse: collapse; width: 100%; }
|
||||
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
|
||||
th { background-color: #4CAF50; color: white; }
|
||||
tr:nth-child(even) { background-color: #f2f2f2; }
|
||||
.file-link { text-decoration: none; color: #0066cc; }
|
||||
.file-link:hover { text-decoration: underline; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>SysY语法树生成报告</h1>
|
||||
<div class="summary">
|
||||
<h2>统计信息</h2>
|
||||
<p>生成时间: $(date)</p>
|
||||
<p>测试目录: $TEST_DIR</p>
|
||||
<p>输出目录: $OUTPUT_DIR</p>
|
||||
<p>总计: $TOTAL</p>
|
||||
<p>成功: <span class="success">$SUCCESS</span></p>
|
||||
<p>失败: <span class="failure">$FAILED</span></p>
|
||||
<p>跳过: <span class="skipped">$SKIPPED</span></p>
|
||||
<p>成功率: $((SUCCESS * 100 / TOTAL))%</p>
|
||||
</div>
|
||||
|
||||
<h2>详细结果</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<th>文件</th>
|
||||
<th>状态</th>
|
||||
<th>输出文件</th>
|
||||
<th>错误信息</th>
|
||||
</tr>
|
||||
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; s/>/\>/g')
|
||||
fi
|
||||
fi
|
||||
|
||||
cat >> "$REPORT_FILE" << EOF
|
||||
<tr>
|
||||
<td>$rel_path</td>
|
||||
<td class="$status_class">$status</td>
|
||||
<td><a href="$dir_path/${base_name}.tree" class="file-link">${base_name}.tree</a></td>
|
||||
<td>$error_msg</td>
|
||||
</tr>
|
||||
EOF
|
||||
done
|
||||
|
||||
cat >> "$REPORT_FILE" << EOF
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
|
||||
echo -e "${GREEN}HTML报告已生成: $REPORT_FILE${NC}"
|
||||
Loading…
Reference in new issue