我想问一些关于Domain Object和Semantic Model这两个概念的想法。
所以,我真的很想知道Domain Object / Semantic Model是用来做什么的,而不是用来做Domain Object / Semantic Model的。
据我所知,如果有一个grammar,那么做这些分离概念是绝对可取的。
然而,我还不是很清楚该怎么做。例如,根据这个简单的语法,如何构建Domain Object或Semantic Model。
这正是我想弄清楚的..。
为了通过AST,大多数书籍都建议使用这种方法。不是同时直接翻译,而是使用AST,创建一个语义模型,然后连接到一个解释器。
示例(SQL语法树):
我不是直接生成SQL语句,而是创建一个语义模型,然后我可以使用解释器将该语义模型转换为SQL语句。
Abstract Systex Tree -> Semantic Model -> Interpreter通过这种方式,我可以有一个Transact-SQL解释器和另一个用于SqLite的onr。
发布于 2016-03-24 00:52:06
术语“域对象”和“语义模型”实际上不是编译器文献中的标准术语,因此您会得到许多随机答案。
与解析相关的常用术语是“具体语法树”(匹配语法规则的形状)、“抽象语法树”(试图创建包含较少意外细节的树,although it might not be worth the trouble.)。
Parsing is only a small part of the problem of processing a language。你需要对语法进行大量的语义解释,无论你如何表示它(AST,CST,...)。这包括以下概念:
这些概念中的每一个或多或少都建立在前面的概念之上。
我能说的最接近“语义模型”的是高级代码生成。这需要大量的机器,你必须在树上建造。
ANTLR解析。你必须做/提供剩下的。
https://stackoverflow.com/questions/36174162
复制相似问题