From c4998f50c49d40cca66e8806df4350a5a6ecf809 Mon Sep 17 00:00:00 2001 From: 220046-Wang Kai Date: Mon, 28 Feb 2022 22:44:12 +0800 Subject: [PATCH] finish pa1 report --- reports/pa1/README.md | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/reports/pa1/README.md b/reports/pa1/README.md index faff780..945b191 100644 --- a/reports/pa1/README.md +++ b/reports/pa1/README.md @@ -89,7 +89,38 @@ Date: 2022/2/11 ### 四. 简易调试器构建(2) -##### 4.1 +##### 4.1 实现扩展表达式 + +* 由于我之前写的条理不够清晰,所以这部分我表达式是重写了一份 + +* 主要思想如下: + + 1. 首先利用栈对表达式的括号进行匹配 + 2. 对表达式进行预处理,如果识别出'*','+','-'判断其左部是否是个表达式,否则这些token则为单目运算符,需要改变token属性 + + 3. 先判断当前处理表达式长度是否为1,如果是1则说明该表达式可能是10进制数,16进制数,或者是寄存器,调用相应接口实现取数 + + 4. 判断表达式两边是否有括号匹配,如果匹配直接去括号 + + 5. 尝试取主操作符,按照优先级从低到高,位置从左到右返回主操作符位置(注:此阶段并不考虑单目运算符) + 6. 若无法匹配以上情况,只可能当前运算是单目运算,先取得运算符右边的值之后进行相应操作 + + + +##### 4.2 监视点 + +* 此阶段即为链表操作,感觉还可以 + + + +##### 4.3 编写shell脚本 + +```makefile +FILENUMS := $(shell find $(NEMU_HOME) -name "*.[c|h]" | wc --lines) +.PHONY: count +count: + @echo "Total num is $(FILENUMS)." +```