您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
设计编程语言需要用什么(无需提供步骤)?
语言,编译器,的话设计编程语言需要用什么(无需提供步骤)?
发布时间:2016-12-08加入收藏来源:互联网点击:
设计编程语言需要用什么(无需提供步骤)?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
要自己设计一个编程语言,下面几点必须要考虑。
确定目标受众
首先要明确你所设计语言的目标受众是什么。比如是如C/C++、Java、Python等这种通用的语言,还是如AWK、Make、CMake等领域特定语言(DSL)。
如果是通用语言,那么是C/C++这种系统型语言,还是Java、python等这种应用型的语言。
确定要支持的语言特性
根据目标受众,确定你的编程所要支持的语言特性。比如是否支持面向对象编程,是否支持函数式编程,是否支持并行处理、是否支持泛型编程等。
此外,还要确定是强类型语言还是弱类型语言?是静态类型语言还是动态类型语言等。
制定语言的文法规范和语义规范
根据语言要支持的特性,制定语言的文法规范。比如变量如何声明、函数如何定义、支持哪些控制语句,各种表达式的运算规则等。
确定语言的实现方式
同一种语言可以有不同的实现方式。比如是如绝大多数C/C++的实现一样,直接编译成二进制机器码?还是像Java这样,编译编译成字节码,然后用虚拟机来运行?还是直接解释执行等等。
可利用的工具
对于编译器前端来说,可以选择手工编写,也可以选择使用工具。
手工编写的话,比较简单实用的方法是递归下降和算符优先等算法。
选择工具的话,也有很多工具可用,比如Lex+YACC、Flex+Bison等
如果主要的目的是学习的话,建议还是手写比较好。
对于后端来说,代码优化是非常重要的一部分。毫不夸张的说,代码优化是一个现代编译器能否成功的决定性因素,也是整个编译器设计中难度最大,最为复杂的部分,也是最容易出BUG的部分。
一般,还是建议选择使用一些成熟的工具。比如LLVM,应该作为首选。大名鼎鼎的Clang的后端就是LLVM。LLVM现在已经相当成熟,近几年很多新的编译器都是采用LLVM作为后端。
觉得有用的话,点个赞呗!
对编译器、OS内核、性能调优、虚拟化等技术感兴趣的童鞋,欢迎关注!
回答于 2019-09-11 08:43:50
很多编程是语言都是c语言希望的解析引擎和执行运行环境,比如php,java和ruby等。这首先取决于你要设计哪个层面用的编程语言。
如果想要发明一种编程语言,建议还是把计算机硬件和操作系统,相关的应用程序体系等底层基础吃透一些。
回答于 2019-09-11 08:43:50
本人曾经参与过嵌入式专用芯片的C语言编译器的开发,要想设计一门计算机语言,绝非易事。除了至少精通以下一门语言,比如
CC++Rust你还需要掌握编译原理,熟读一本号称为“龙书”的全英文著作。
原名:Compilers: Principles,Techniques, and Tools作者:Alfred V.Aho, Ravi Sethi, JeffreyD,Ullman中文名:编译原理技术与工具学习了编译原理之后,你就会掌握BNF语法,LL(1)左递归文法,下面简单说明下。
文法G是LL(1)的,当且仅当对于G的每个非终结符Α的任何两个不同产生式 Α→α,Α→β均满足下面条件(其中α和β不能同时推出ε): 1、FIRST(α)∩FIRST(β)=Φ 2、假若β=>*ε,那么FIRST(α)∩FOLLOW(A)=Φ
活在当下,就可以采用最新的技术栈啦,你需要掌握LLVM框架,low level vm ,底层虚拟机的意思,是一个强大的编译器后端,它负责把编译器中间语言翻译为机器指令,现在主流的编译器都是基于llvm开发的,包括clang, swift, rust, go, 华为方舟编译器等等。
最后需要动手实战了,推荐阅读一个叫TinyC的C编译器。Tiny C Compiler(简称TCC, 或Tiny CC)是世界上最小的C语言编译器,而且是开源的, 小到只有约100K,非常适合学习编译原理。
别看它小, 功能还是很强. 可以编译所有C99标准的ANSI C程序 , 支持CPU包括:X86 32或64位, ARM,支持Windows, Linux, OSX.(跨平台跨系统的能力,比VC强)
TCC是由大牛Fabrice Bellard开发的,这位大牛还开发过 Qemu, FFMpeg (没有FFMpeg, 就没有抄它的腾讯视频,暴风影音...)
TCC主页: http://bellard.org/tcc/
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |