【发布时间】:2011-03-15 14:59:34
【问题描述】:
HY.我正在尝试使用 JavaCC(汇编程序)制作一个解析器,以将汇编代码(微控制器 8051)转换为机器代码。我已经阅读了有关 javaCC 语法及其结构方式的信息,但我遇到了一个难题.例如我有ADD指令:
`ADD A,Rn` or `ADD A,@Ri`
对于他们每个人,我都有一个机器代码(十六进制代码)例如:ADD A,R0 转换为 28H 。
我也可以使用MOV 指令:MOV A,Rn 或MOV A,@Ri 但我也有MOV data_addr,Rn 和MOV R6,#data 等等。
现在我的问题是如何在两条指令之间做出这种区别。假设我这样定义我的令牌:Token{
<IN_MOV :"mov">
|<IN_ADD:"add"
}
我无法为每个标记定义函数来指定特定行为,因为我有很多指令。要说token.image==.equals("mov"), then go on one direction to the specific behaviour 有点多,你不觉得吗?....所以我非常多卡住了。我不知道该怎么走。
感谢您的帮助。!
【问题讨论】:
标签: assembly parser-generator javacc