你会如何编写一个简单的编程语言?

时间:2010-11-03 21:33:27

标签: compiler-construction language-design

  

可能重复:
  Methodologies for designing a simple programming language
  Learning to write a compiler

我想编写一种编程语言,其语法类似于QBasic,但更简单。我希望它适合初学程序员。它的简单性将鼓励有抱负的程序员不要放弃并让他们对编程感兴趣。例如: 而不是QBasic的 打印“Hello World!”

我会用

写下“Hello World!”

或者更像VB

写(“Hello World”)

我如何调整基本语法来制作我的语言?

2 个答案:

答案 0 :(得分:14)

这不是一项简单的任务。语言分析和编译器理论是非常重要的主题。很多数学。您还必须决定要定位的平台,这也将决定您的语言是否已完全编译(例如,C / C ++,Pascal),编译为字节码(例如Python,Java),还是在运行时解释(例如VBScript) ,JavaScript)。要指定语言本身,请查看Backus-Naur format

为了帮助您,有几个强大的解析器生成器,包括:

  • Lex / Yacc(Flex / Bison是GNU版本) - 旧学校行业标准。用于在C / C ++中开发编译器
  • ANTLR - 如果您对使用Java创建编译器感兴趣
  • Boost.Spirit - 一种不同的方法,允许使用C ++本身来​​规范语言。

还有更多。可以找到here的比较,而另一个列表可以找到here

如果您真的对完整理论感兴趣,可以查看The Dragon Book

但我必须重申:这是一个很大的主题。有很多很多工具可以帮助你,但兔子洞的深度很深。

答案 1 :(得分:2)

我认为最重要的是:

  1. 简单易用。
  2. 设计/实施简单。
  3. 表达能力强。
  4. 选择其中的1.9个。

    很有可能获得其中任何两个的合理程度。完全做任何两个是非常很难,并试图让所有三个人离开你在没有做好的无人区。

    P.S。我从#1 +#3

    的经验中汲取灵感