C++ 创建我自己的编程语言

C++ 创建我自己的编程语言,c++,compiler-construction,programming-languages,interpreter,C++,Compiler Construction,Programming Languages,Interpreter,可能的重复项: 我知道一些C++,非常擅长PHP,在CSS HTML中有PRO,JavaScript好。所以我在思考C++是如何创建的,我是说计算机如何理解代码的含义?它怎么能读。。。那么我是否有可能创建自己的语言以及如何创建呢?如果您对编译器设计感兴趣(“计算机如何理解代码的含义”),我强烈推荐。我在大学时使用过它,甚至自己创造了编程语言。这是可能的。您应该了解编译器和/或解释器:它们的用途和制作方法。开始学习ASM并阅读字节码的工作原理,您可能有机会:)如果您想了解计算机如何理解代码,

可能的重复项:



我知道一些C++,非常擅长PHP,在CSS HTML中有PRO,JavaScript好。所以我在思考C++是如何创建的,我是说计算机如何理解代码的含义?它怎么能读。。。那么我是否有可能创建自己的语言以及如何创建呢?

如果您对编译器设计感兴趣(“计算机如何理解代码的含义”),我强烈推荐。我在大学时使用过它,甚至自己创造了编程语言。

这是可能的。您应该了解编译器和/或解释器:它们的用途和制作方法。

开始学习ASM并阅读字节码的工作原理,您可能有机会:)

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

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

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


听起来你是个足智多谋的人。你会想找到关于这些主题的书籍和/或网站,这些主题是根据你的理解水平量身定制的,并且关注你最感兴趣的内容。拥有计算机科学或计算机工程学士学位,就可以对所有这些有相当全面的了解,但对于你这个职位上的一个积极的人来说,很多事情都是可以理解的。

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

如果你懂C——听起来像是这样——那就拿一本用过的古书:

在书中有一章,作者用C语言创建了一个“C”解释器。它在学术上不像《龙之书》那样严肃,但我记得它非常简单,非常实用,容易理解,而且因为你才刚刚开始,这将是对语言“语法”和“标记化”思想的极好的介绍节目


这将是一个完美的开始的地方。此外,二手书的售价为0.01美元,比《龙之书》便宜

是的,您可以创建自己的语言。看看编译器。如果你敢的话,也可以将源代码转换成一些脚本语言。一些有用的工具是yacc、bison和lexx

其他人提到了龙书。在我大学时代,我们用了一本书,我想这本书叫做《编译理论与实践》

编写语言不需要学习汇编程序。例如,Javascript运行在一个称为解释器的程序中,解释器是一个执行Javascript文件的应用程序。在这种情况下,解释器通常内置在浏览器中

最简单的启动程序语言可能是编写一个简单的基于文本的计算器。i、 e.取一个文本文件,运行它并执行计算。你可以很容易地用C++编写。< /P>
我在大学项目中的第一门语言是BNF中定义的语言。然后,我们必须编写一个解析器,将其解析为内存中的树结构,然后再解析为称为3地址码(类似于汇编程序)的内容。您可以很容易地将3个地址代码转换为真正的汇编程序或为此编写一个解释器。

从创建解析器开始。阅读EBNF语法。这将回答您关于计算机如何读取代码的问题。这是一个非常高级的话题,所以不要对自己期望太高,但要玩得开心。我在这方面使用的一些资源是bison、flex和。

“我时不时地感到设计编程的诱惑 语言,但我只是躺下,直到它消失 德国

编辑(对于渴望了解上下文的人):


如果你想对这个主题——计算基础——做一个非常全面(但写得非常好)的介绍,我强烈推荐查尔斯·佩佐尔德的《代码》一书。他解释了许多你感兴趣的话题,从中你可以决定自己想要创造什么。

看看这本书,
它会一步一步地介绍设计计算机语言、编译器、虚拟机、汇编程序和计算机的几个方面。我想这可以帮助你回答一些问题。

我真的推荐你。这是一本很棒的书,它从语言是什么到编译器是如何工作的,以及如何创建自己的语言。这本书比《龙之书》更容易理解,它解释了事情是如何在头先跳之前进行的。

是的!对编译器感兴趣是我进入专业计算机科学领域的一大诱因(以前我一直在学习EE,在大学里只是正式交换了立场),这是学习大量计算机科学主题的好方法。你有点年轻(我在高中的时候就开始和解析器和解释器鬼混),但现在你的指尖上有更多的信息

从小处着手:设计你能想到的最细小的语言——从一个简单的数学计算器开始,它允许变量赋值和替换。当你喜欢冒险时,尝试添加“如果”或循环。忘记像lex和yacc这样的神秘工具,试着手工编写一个简单的递归下降解析器,可能会转换成简单的字节码并为其编写一个解释器(避免理解特定机器的汇编、寄存器分配等所有困难的部分)