我想问一些有关概念的想法:Domain Object
和Semantic Model
。
所以,我真的想了解Domain Object / Semantic Model
是什么,什么不是Domain Object / Semantic Model
。
到目前为止,我已经弄明白了,鉴于grammar
是绝对可取的,这些分离概念。
但是,我不太明白该怎么做。例如,鉴于这种轻微的语法,您如何构建Domain Object
或Semantic Model
。
这正是我想弄清楚的......
大多数书都提出了这种方法,以便通过AST。你不必直接翻译,而是先创建一个语义模型,然后连接到它一个解释器。
示例(SQL语法树):
我创建了一个语义模型,而不是直接生成一个SQL语句,然后我能够连接一个将这个语义模型转换为SQL语句的解释器。
Abstract Systex Tree -> Semantic Model -> Interpreter
通过这种方式,我可以拥有一个Transact-SQL解释器和另一个用于SqLite的onr。
答案 0 :(得分:1)
术语"域对象"和#34;语义模型"不是编译器文献中的标准术语,因此您可以获得大量随机答案。
与解析相关的常用术语是"具体的语法树" (匹配语法规则的形状),"抽象语法树" (尝试制作一个包含较少意外细节的树although it might not be worth the trouble.)。
Parsing is only a small part of the problem of processing a language。你需要大量语法的语义解释,但是你代表它(AST,CST,...)。这包括以下概念:
这些概念中的每一个或多或少都建立在前面的概念之上。
我最接近"语义模型"是高级代码生成。这需要很多机器,你必须建立在树顶。
ANTLR解析。你必须做/供应其余的。