实现语言的自举

几乎全部的语言项目,其核心都是用更底层的语言写的.express

底层语言大部分是 C,C++,而扩展这门语言的核心,就要用另一种语言
去写。这给语言设计者较大的挑战。编程

开发语言必须具有底层语言的编写能力,而为了能用本身喜欢的语言编写
代码,就必须用另一种低级的语言去写要经历反复测试的优秀的代码,
这是一种无奈。数据结构

不少语言的自举项目是很是吸引人的,例如 PyPy, Java 语言也实现了
自举。架构

如今有一种新的实现语言自举的办法:从解析语法开始并发

Perl6 从语言设计阶段就决定让语言实现自举:让语法分离出来。编程语言

语言的能力老是要有必定的表现形式,而这种表现形式的制定具备很强的
随意性,这种随意性和开发者的喜爱,性格,阅历,经验有关。而语言的
核心能力其实相差无几,在形式上的喜爱追求,造就了编程语言的多样性。函数

大部分语言都有和其类似的语言存在,不少人的沉迷在形式的构建上,作
了许多重复的事情。oop

其实形式是能够单独造成一门语言的,而这门语言能够被解释执行。这让那些
注重形式的人能够从不一样形式语言的形式中解放出来,能够专一于按照本身
的风格书写代码。这种将形式独立出来的东西就是语言的语法。测试

在语言的语法背后,是很是单调的语言能力:设计

   变量赋值
   数据类型
   算数表达式
   条件判断
   循环结构
   代码续延
   函数代码块
   命名空间
   代码预处理宏
   代码注释
   类型,函数的组织架构(面向对象,元类)

还有一些语言支持并发,抽象出进程和协议栈等数据结构。
这些结构本质上是续延:

   代码能够在后台运行,而让接下来的代码继续执行。

管理在后台运行的代码,合并后台代码计算的结果,构成了并发的各类
不一样表现形式。

描述语言的语言叫作语法,大部分现存的语法规则都是文档性质的,
也就是否是做为代码执行的依据,而是人写代码的参考。

也有一些能够做为代码被执行的语法,但形式多样,能力不一:

   这和语言的现状同样,形式化的不一样形成了这个领域的重复建设

既然把形式分离出来,还要注重形式吗?

全部的东西,都要有必定的表现形式,若是这种形式能够被定义,那么:

   形式应当尽量的简洁,尽量的沿用现有的规则,被大多数人理解

      language Ruby

      main : expression+
      expression: condition | loop | assign | compute


有解析语言的能力的人,都有能力创立新的语言。有人愿意拥有这种能力后,只是转换别的语言吗?

      现存的语法主要有 BNF EBNF Antlr-g4 Haskell-Parsent

相关文章
相关标签/搜索