我的问题是,我需要学习什么来完成这项任务,...the的任务是根据简单的编程指令创建自动代码生成器,如
(x:=5-z; while x<z do (x:=x*2; z:=z+x) ) 并把它翻译成抽象机器。
PUSH-5:FETCH-z:SUB:STORE-x: LOOP ...etc....所以我的问题is...Where开始了吗??,我需要一些解析器,解析器必须使用一些XML ..but,我真的不知道如何定义..but。
请帮助从哪里开始..thanks ..。
我将在中编写它。
发布于 2017-01-28 12:39:52
如果您知道所支持的语法,那么实现您自己的解析器就不难了。按char解析字符串char,通过下一个运算符或空白检测运算符、文字终止或变量名称结尾,并获取先前存储的字符作为令牌。标识标记的类型,并在Java中构建面向对象的模型。一旦您有了一个面向对象的表达式模型,您就可以使用例如访问者模式来漂亮地打印、评估甚至翻译成机器代码,这取决于您的访问者实现。
(从角度来看:从您的问题来看,不清楚这个解析器如何处理XML.)
几年前,我实现了这样一个解析器,用于计算此类表达式(但尚未转换为机器代码)。我的旧计划可以让你知道我是如何解决这个任务的。
发布于 2017-01-28 15:20:42
你需要读几本关于编译器编写的书。这个问题对StackOverflow来说太大了--首先,如果不知道你有多少计算机科学知识,就不可能回答这个问题(例如,你了解堆栈和有限状态自动机吗?)
这一领域的经典著作是Aho和Ullmann,它现在已经很古老了,但老实说,基本思想并没有发生太大的变化,我仍然使用它。
基本步骤是:
https://stackoverflow.com/questions/41909809
复制相似问题