Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
程序员如何在C语言的基础上开发一种编程语言?_C_Compiler Construction_Programming Languages - Fatal编程技术网

程序员如何在C语言的基础上开发一种编程语言?

程序员如何在C语言的基础上开发一种编程语言?,c,compiler-construction,programming-languages,C,Compiler Construction,Programming Languages,我对在C语言之上开发自己的编程语言很感兴趣,但我没有 我不知道从哪里开始 所以,我研究了一下,这引起了我的注意: A lot of languages are C-based. 流行的编程语言,如C++和Objective-C,以及可能的C#和Java都是在C之上构建的(更不用说Python了) 《C++》和Objul-C创作者是如何创造一种C语言的新语言,但增加了面向对象的编程概念? < P> C并不意味着它与C是可互操作的。它可能只是意味着,它使用了相同的范例或类似的语法,比如埃及大括号

我对在C语言之上开发自己的编程语言很感兴趣,但我没有 我不知道从哪里开始

所以,我研究了一下,这引起了我的注意:

A lot of languages are C-based. 
流行的编程语言,如C++Objective-C,以及可能的C#Java都是在C之上构建的(更不用说Python了)


《C++》和Objul-C创作者是如何创造一种C语言的新语言,但增加了面向对象的编程概念?

< P> C并不意味着它与C是可互操作的。它可能只是意味着,它使用了相同的范例或类似的语法,比如埃及大括号

Java是基于C的,但也借用了Smalltalk,它不能运行任何C代码。C++可以调用C函数,因为编译器产生与C代码相同的二进制代码。一旦您链接了它们的二进制文件,它们就可以互操作了。Pythons实现CPython首先不生成任何二进制文件,它是一个解释实现,这意味着它由一个解释器程序运行,该程序将整个解析的语法树保存在内存中。因为解释器本身就是一个C程序,所以它可以调用其他C函数。因此,没有像在C语言中添加特性这样的事情。这些是不同的语言,有不同的编译器/解释器和语法工具,它们只是借用了C语言的一些语法规则


开始创建自己的语言最简单的方法是使用解析器生成器,如。我会开始创建一个解释器,而不是二进制编译器。也许是编译成c语言的编译器。语言语法知识是必不可少的

我很遗憾地说,对这个问题的正确答案应该是书的长度。我不知道有哪本书能回答这个问题。欢迎光临。这是一个非常大的话题,可能不是这里回答的问题类型。请阅读。谢谢。“构建在C之上”对于C#、Java和Python等语言来说是非常误导的。“基于”在这里是不明确的。我认为你应该研究使用C语言的语言与受C语言风格影响的语言之间的区别。听起来好像你把语言的设计从C语言中借用了元素,用C语言编写的语言的实现和编译器(如果有的话)混为一谈了用于产生C作为输出的语言。C++几乎是C-E-LoT的超集,但是有很多C++编译器,有些用C编写,有些用C++编写,还有可能用其他语言编写;虽然C++的最初实现(称为cFAX)编译成C,但是大多数现存的实现都是针对特定的体系结构编译或汇编的。我将从一名口译员开始。