大家好,今天小编关注到一个比较有意思的话题,就是关于java语言bnf的问题,于是小编就整理了1个相关介绍Java语言bnf的解答,让我们一起看看吧。
设计编程语言需要用什么(无需提供步骤)?
本人曾经参与过嵌入式专用芯片的C语言的开发,要想设计一门计算机语言,绝非易事。除了至少精通以下一门语言,比如
- 原名:Compilers: Principles,Techniques, and Tools
- 作者:Alfred V.Aho, R***i 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主页: ***://bellard.org/tcc/
很多编程是语言都是c语言希望的解析引擎和执行运行环境,比如php,JAVA和ruby等。这首先取决于你要设计哪个层面用的编程语言。
如果想要发明一种编程语言,建议还是把计算机硬件和操作系统,相关的应用程序体系等底层基础吃透一些。
要自己设计一个编程语言,下面几点必须要考虑。
首先要明确你所设计语言的目标受众是什么。比如是如C/C++、J***a、python等这种通用的语言,还是如AWK、Make、CMake等领域特定语言(DSL)。
如果是通用语言,那么是C/C++这种系统型语言,还是J***a、Python等这种应用型的语言。
根据目标受众,确定你的编程所要支持的语言特性。比如是否支持面向对象编程,是否支持函数式编程,是否支持并行[_a***_]、是否支持泛型编程等。
此外,还要确定是强类型语言还是弱类型语言?是静态类型语言还是动态类型语言等。
根据语言要支持的特性,制定语言的文法规范。比如变量如何声明、函数如何定义、支持哪些控制语句,各种表达式的运算规则等。
同一种语言可以有不同的实现方式。比如是如绝大多数C/C++的实现一样,直接编译成二进制机器码?还是像J***a这样,编译编译成字节码,然后用虚拟机来运行?还是直接解释执行等等。
到此,以上就是小编对于j***a语言bnf的问题就介绍到这了,希望介绍关于j***a语言bnf的1点解答对大家有用。