C风格的脚本语言

时间:2014-03-30 08:55:10

标签: programming-languages

我正在尝试为教育目的开发一个简单的C style scripting language

到目前为止我做了什么:

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

我想要包含的功能:

  • Arthematics
  • 条件
  • while循环(仅限)

目前我不想在语言中添加其他功能,因为它会使开发过程变得非常复杂。

但是,我不知道开发语言的后续步骤是什么。我在SO上经历了很多问题但是它们的细节并不是很具体。请指导我完成这个过程。

3 个答案:

答案 0 :(得分:0)

我认为这些答案有助于开始:

如果您已定义EBNF语法,则可以使用BISON之类的工具来创建解析器。使用该解析器生成抽象语法树,然后您可以继续为您的语言创建解释器。

答案 1 :(得分:0)

几年前,我一直在开发自己的语言(它是语言解释),并且在语言为#34;其他人"尝试一下,我发现我之前应该做的事情很少或更好:

  1. 用该语言解决大量简单的编程问题
  2. 解决了一些,但我会称之为"硬核"编程问题(例如Project Euler
  3. 编写复杂的语言规范,几个例子,维基或常见问题解答,以及任何可以让您不断回答相同问题的内容
  4. 希望有所帮助。

答案 2 :(得分:0)

是的,多次这样做我知道很难知道从哪里开始。你真的不需要Lex或Yacc或Bison。

  1. 确保您的词汇元素(标记)和语法(在EBNF中)的定义已经确定。
  2. 为您的代币写一个词法分析器。它应该能够读取发出令牌并优雅结束的示例程序。
  3. 写一个符号表。这是您在识别符号时放置符号的位置。您也可以将保留字和文字放在这里。这是一个设计选择。
  4. 编写一个递归下降解析器,其函数用于识别语法中的每个产生。您可能需要修改语法才能执行此操作。
  5. 为您的AST(抽象语法树)编写树/节点管理器。解析器将节点添加到树中,并在识别产品时将链接添加到符号表中。
  6. 假设你走得这么远,最后两步是:

    1. 执行AST执行类型和参考分辨率,某些优化等。
    2. 走AST,发出代码。
    3. 最后两步结果是大部分辛勤工作的地方。

      您需要一些特定的参考资料,您选择的内容取决于您的水平以及您喜欢阅读的内容以及您喜欢的语言。龙书是一个明显的选择,但还有很多其他选择。我建议你看看这里:Learning to write a compiler