【发布时间】:2016-06-07 20:31:51
【问题描述】:
对于我的课程,我必须为一小部分 Python 编写编译器:
- 这种语言只有一种方法
- 没有函数,所以我只处理一个词法范围
这个 Python 子集将被翻译成 Java 字节码。 我已经完成了词法分析和解析树(使用 lex 和 yacc)。 我被困在代码生成上。
我们使用Gnoloo 进行代码生成,这是一种堆栈机器语言。
问题是我不知道如何存储变量。我知道我必须使用符号表,但我不知道如何填充它。
我必须存储变量的值吗?
如果代码有x = 2,符号表是否必须有一个字段?
如何存储堆栈机器的变量。
【问题讨论】:
-
不清楚你在问什么。从您接受的答案来看,您是在询问如何构建编译时符号表,在这种情况下,堆栈机器与问题完全无关,并且您不会停留在代码生成上,而是停留在符号表上建筑。您的问题的措辞方式似乎是关于如何通过代码生成器将变量存储到堆栈机器的目标代码中。
标签: compiler-construction code-generation yacc symbol-table stack-machine