java实现自举_实现语言的自举 - 沙枣的个人空间 - OSCHINA - 中文开源技术交流社区...

几乎所有的语言项目,其核心都是用更底层的语言写的.

底层语言大部分是 C,C++,而扩展这门语言的核心,就要用另外一种语言

去写。这给语言设计者较大的挑战。

开发语言必须具备底层语言的编写能力,而为了能用自己喜欢的语言编写

代码,就必须用另外一种低级的语言去写要经历反复测试的优秀的代码,

这是一种无奈。

很多语言的自举项目是非常吸引人的,例如 PyPy, Java 语言也实现了

自举。

现在有一种新的实现语言自举的办法:从解析语法开始

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

语言的能力总是要有一定的表现形式,而这种表现形式的制定具有很强的

随意性,这种随意性和开发者的喜好,性格,阅历,经验有关。而语言的

核心能力其实相差无几,在形式上的喜好追求,造就了编程语言的多样性。

大部分语言都有和其相似的语言存在,很多人的沉迷在形式的构建上,做

了许多重复的事情。

其实形式是可以单独形成一门语言的,而这门语言可以被解释执行。这让那些

注重形式的人可以从不同形式语言的形式中解放出来,可以专注于按照自己

的风格书写代码。这种将形式独立出来的东西就是语言的语法。

在语言的语法背后,是非常单调的语言能力:

变量赋值

数据类型

算数表达式

条件判断

循环结构

代码续延

函数代码块

命名空间

代码预处理宏

代码注释

类型,函数的组织架构(面向对象,元类)

还有一些语言支持并发,抽象出进程和协议栈等数据结构。

这些结构本质上是续延:

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

管理在后台运行的代码,合并后台代码计算的结果,构成了并发的各种

不同表现形式。

描述语言的语言叫做语法,大部分现存的语法规则都是文档性质的,

也就是不是作为代码执行的依据,而是人写代码的参考。

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

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

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

所有的东西,都要有一定的表现形式,如果这种形式可以被定义,那么:

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

language Ruby

main : expression+

expression: condition | loop | assign | compute

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值