compiler-construction - 您将如何编写一种简单的编程语言? [复制]

标签 compiler-construction language-design

这个问题已经在这里有了答案:




已关闭10年。




Possible Duplicates:
Methodologies for designing a simple programming language
Learning to write a compiler



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

我会用

写下“Hello World!”

或更像VB

写(“Hello World”)

我将如何调整基本语法以使自己的语言成为现实?

最佳答案

这不是一个简单的任务。语言解析和编译器理论是相当繁重的主题。很多数学。您还必须决定要定位的平台,这还将确定您的语言是否已完全编译(例如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

    但我必须重申:这是一个很大的话题。有很多工具可以帮助您,但是兔子洞会变得很深。

    关于compiler-construction - 您将如何编写一种简单的编程语言? [复制],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4091887/

    相关文章:

    java - 初始化最终字段 - Java

    java - 尝试打印数组

    c++ - 新安装 MinGW 问题,包含编译和可执行文件

    rust - 什么是类型状态?

    c# - 为什么语句是 (j++);禁止?

    dsl - 领域特定语言和编译器

    compiler-construction - 反斜杠 "\"到底是什么意思?

    c++ - 为什么 C++ 语言设计者不断重复使用关键字?

    c# - 重新实现另一个接口(interface)已经继承的接口(interface)

    C 嵌套开关 : outer switch's case inside inner switch