首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C风格脚本语言

问C风格脚本语言
EN

Stack Overflow用户
提问于 2014-03-30 08:55:09
回答 3查看 609关注 0票数 2

我正在尝试开发一个简单的C style scripting language,用于教育。

我迄今所做的事::

  • 语言的定义syntax
  • 编写语言tokenizing的代码。

我现在想包括的特点是:

  • 兵器学
  • 条件
  • 同时循环(仅)

目前,我不想在语言中添加其他特性,因为它会使开发过程变得相当复杂。

然而,我不知道在开发一种语言时接下来的步骤是什么。我已经问过很多这样的问题,但在细节上不是很具体。请指导我这个过程。

EN

回答 3

Stack Overflow用户

发布于 2014-03-30 09:11:38

我认为这些答案在一开始是有帮助的:

如果您已经定义了EBNF语法,那么您可以使用像野牛这样的工具来创建解析器。使用该解析器生成抽象语法树,然后可以继续为您的语言创建一个解释器。

票数 0
EN

Stack Overflow用户

发布于 2014-03-30 09:13:00

几年前,我也在发展自己的语言(被解释的语言),当语言准备好让“其他人”尝试的时候,我发现我几乎没有什么事情应该做得更早,或者更好:

  1. 用那种语言解决大量简单的编程问题。
  2. 只解决几个问题,但我称之为“硬核心”编程问题(例如Euler项目)。
  3. 编写复杂的语言规范,很少有例子,wiki或常见问题,好吧,任何可以让你一直回答同样问题的东西。

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2014-04-06 03:34:19

是的,我已经做了好几次了,我知道很难知道从哪里开始。你真的不需要莱克斯,雅克或者野牛。

  1. 确保你的词汇元素(标记)和语法(在EBNF中)的定义是固定的。
  2. 为您的令牌编写一个lexer。它应该能够读取一个示例程序,发出标记并优雅地结束。
  3. 写一个符号表。这就是当你识别符号的时候,你会在那里放置符号。你也可以把保留的词和文字放在这里,也可以不放。这是设计上的选择。
  4. 编写一个递归下降解析器,其中包含一个用于识别语法中每个产品的函数。您可能需要修改语法以让您这样做。
  5. 为AST (抽象语法树)编写树/节点管理器。解析器在识别产品时,将具有链接的节点添加到符号表中。

假设您走到了这一步,最后两个步骤是:

  1. 了解AST的执行类型和引用解析、某些类型的优化等。
  2. 遍历AST以发出代码。

最后两个步骤被证明是大多数艰苦工作的所在。

你需要一些具体的参考资料,你选择什么取决于你的水平,你喜欢读什么,你喜欢写什么语言。“龙书”是一个明显的选择,但还有许多其他的选择。我建议你看看这里:学习编写编译器。

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

https://stackoverflow.com/questions/22742099

复制
相关文章

相似问题

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