创建我自己的编程语言

Ram*_*lol 37 c++ compiler-construction interpreter programming-languages

可能的重复:
在C/C++中实现解释器所需的引用
如何创建语言这些天?
学习编写一个编译器

我知道一些c ++,非常擅长php,亲在css html,还可以在javascript.所以我在考虑如何创建c ++我的意思是计算机如何理解代码的含义?它怎么读...所以我可以创建自己的语言,怎么样?

Nik*_*bak 47

如果您对编译器设计感兴趣("计算机如何理解代码的含义"),我强烈推荐Dragon Book.我在大学期间使用它,并且自己创建编程语言.

  • 我不认为我会向13岁的人推荐龙书. (34认同)
  • @mmyers,如果他已经知道一些C++和*非常擅长php ......他可能拥有理解Dragon book所需的技能和知识.如果没有其他任何东西,它将有助于教他第一个他需要知道/学习的东西*. (21认同)
  • @mmyers只是因为他13岁并没有让编写编译器变得更容易. (5认同)

ant*_*ony 37

"我时不时地感受到设计编程语言的诱惑,但我只是躺下直到它消失." - L. Peter Deutsch

编辑(对于那些渴望上下文的人):

"[L. Peter Deutsch]也写了PDP-1 Lisp 1.5实施,基本PDP-1 LISP,"在12-15岁之间仍然穿着短裤."

  • 13岁时,我正在使用Signetics 2650汇编语言调试汇编程序.在学习代数后,项目变得更加容易.在大学编译理论与设计课程之后,我现在完全理解它. (2认同)

Mr *_*ooz 19

如果您想了解计算机如何理解代码,您可能想学习一些汇编语言.它是一种低级语言,可以让您更好地理解真正执行的各种简单指令.您还应该能够了解如何使用条件跳转实现更高级别的构造,如循环.

为了更低层次的理解,你需要学习电子学.数字逻辑向您展示如何使用电子"门"并实现可以理解汇编语言代码生成的机器代码的通用CPU.

对于真正低水平的东西,你可以学习材料科学,它可以教你如何真正使门在原子水平上工作.

你听起来像一个足智多谋的人.您可能希望根据您的理解水平搜索这些主题的书籍和/或网站,并专注于您最感兴趣的内容.对所有这些的相当完整的理解来自计算机科学或计算机工程学士学位,但对于你所处位置的有动力的人来说,很多事情都是可以理解的.

  • 问题中未指明"高级别" (6认同)
  • 问题中未指定"编译器".他说他想创造一种新语言.在设计新语言时,通常机器代码编译器不是第一个实现. (4认同)
  • 虽然这些都是很好的东西要学习,但除了第一个,这些东西似乎都不是编写编译器所必需的.如果使用LLVM或类似技术,即使是第一个也不需要. (3认同)

Mat*_*att 11

是的,可以创建自己的语言.看看编译器编译器.或者如果你敢于使用某些脚本语言的源代码.一些有用的工具是yacc和bison和lexx.

其他人提到了龙书.我在大学期间使用过一本我认为被称为"编译理论与实践"的书.

没有必要学习汇编程序来编写语言.例如,Javascript在称为解释器的东西中运行,解释器是执行javascript文件的应用程序.在这种情况下,解释器通常内置在浏览器中.

最简单的启动程序语言可能是编写一个简单的基于文本的计算器.即获取文本文件,运行它并执行计算.你可以很容易地用C++编写它.

我的大学项目的第一语言是给予我们的BNF定义的语言.然后我们必须编写一个解析器,将其解析为内存中的树结构,然后编写为3地址代码(就像汇编程序一样).您可以很容易地将3个地址代码转换为真正的汇编程序或为此编写解释程序.

  • 从写一个计算器开始+1.然而,我会尝试阅读像Dragon Book这样的东西并使用编译器编译器,如Bison或ANTLR. (4认同)

Nik*_*chi 7

对!这绝对是可能的.其他人提到了龙书,但网上也有很多信息.例如,llvm有一个关于实现编程语言的教程:http://llvm.org/docs/tutorial/

  • 呃,我专业编写了几个针对小域特定语言的编译器,最近我做了我的第一个LLVM项目,发现学习曲线非常陡峭.当然,对于学生来说,制作一个非常小的玩具语言并编写自己的简单递归下降编译器和字节码解释器会更好,而不是试图理解使用LLVM所需的所有工业级编译器概念. (3认同)