Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java语法的符号表是如何表示的?_Java_Parsing_Grammar - Fatal编程技术网

Java语法的符号表是如何表示的?

Java语法的符号表是如何表示的?,java,parsing,grammar,Java,Parsing,Grammar,我已经涉猎扫描仪/解析器一段时间了,我掌握了递归下降解析中涉及的基本知识。我在考虑实现更复杂的东西,在那里我可以定义一种合适的语言 我不使用ANTLR、SableCC等解析器生成器,其中包括令牌扫描程序和基本的递归下降解析器。到目前为止,一切都很简单。符号表是一个简单的HashMap,包含变量到int/字符串的映射。我能想到的最好的方法就是用地图来维护层次结构。这是低效的,不允许泛型表示 有人能告诉我如何优雅地表示用于存储类型绑定类层次结构的符号表吗 更准确地说,我想表达: class MyTy

我已经涉猎扫描仪/解析器一段时间了,我掌握了递归下降解析中涉及的基本知识。我在考虑实现更复杂的东西,在那里我可以定义一种合适的语言

我不使用ANTLR、SableCC等解析器生成器,其中包括令牌扫描程序和基本的递归下降解析器。到目前为止,一切都很简单。符号表是一个简单的HashMap,包含变量到int/字符串的映射。我能想到的最好的方法就是用地图来维护层次结构。这是低效的,不允许泛型表示

有人能告诉我如何优雅地表示用于存储类型绑定类层次结构的符号表吗

更准确地说,我想表达:

class MyType<A, X> extends SuperType<A, Integer> { ... }
类MyType扩展了超类型{…} 。。。在符号表中正确输入


坦白说,我迷路了;甚至无法可视化表示该符号的结构的外观。

您只需设计一个符号类,该类包含您需要了解的有关该符号的所有信息。在开发解析器操作和后续树处理时,您将不断修改它。开始吧。你说得对,会有一个符号类,但我会在里面放什么?类的名称和?问题是它会递归并变得复杂。如果您的语言很复杂(例如,具有泛型、继承、接口等),则实际符号表往往具有作用域内符号的哈希映射,以及作用域之间的复杂关系。您可以在此处了解一点符号表: