首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于语法的语义模型

基于语法的语义模型
EN

Stack Overflow用户
提问于 2016-03-23 17:24:08
回答 1查看 180关注 0票数 1

我想问一些关于Domain ObjectSemantic Model这两个概念的想法。

所以,我真的很想知道Domain Object / Semantic Model是用来做什么的,而不是用来做Domain Object / Semantic Model的。

据我所知,如果有一个grammar,那么做这些分离概念是绝对可取的。

然而,我还不是很清楚该怎么做。例如,根据这个简单的语法,如何构建Domain ObjectSemantic Model

这正是我想弄清楚的..。

为了通过AST,大多数书籍都建议使用这种方法。不是同时直接翻译,而是使用AST,创建一个语义模型,然后连接到一个解释器。

示例(SQL语法树):

我不是直接生成SQL语句,而是创建一个语义模型,然后我可以使用解释器将该语义模型转换为SQL语句。

代码语言:javascript
复制
Abstract Systex Tree -> Semantic Model -> Interpreter

通过这种方式,我可以有一个Transact-SQL解释器和另一个用于SqLite的onr。

EN

回答 1

Stack Overflow用户

发布于 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,...)。这包括以下概念:

  • 名称解析(对于每个标识符,它在哪里定义?
  • 类型解析(对于每个标识符/表达式/语法构造,该实体的类型是什么?
  • 类型检查(该语法构造是否以有效的方式使用?)
  • 控制流分析(程序部分的执行顺序是什么,甚至可能是used流分析(值在哪里定义?在abstraction
  • High级代码生成的高或低级别(例如,解释语言中的句法构造集)将一组语法构造替换为另一组具有某种良好属性的语义等价集在编译之后执行得更快)为目标通常是汇编语言的等价集,如

这些概念中的每一个或多或少都建立在前面的概念之上。

我能说的最接近“语义模型”的是高级代码生成。这需要大量的机器,你必须在树上建造。

ANTLR解析。你必须做/提供剩下的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36174162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档