博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现语言的自举
阅读量:6612 次
发布时间:2019-06-24

本文共 1106 字,大约阅读时间需要 3 分钟。

hot3.png

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

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

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

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

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

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

自举。

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

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

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

随意性,这种随意性和开发者的喜好,性格,阅历,经验有关。而语言的
核心能力其实相差无几,在形式上的喜好追求,造就了编程语言的多样性。

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

了许多重复的事情。

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

注重形式的人可以从不同形式语言的形式中解放出来,可以专注于按照自己
的风格书写代码。这种将形式独立出来的东西就是语言的语法。

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

   变量赋值

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

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

这些结构本质上是续延:

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

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

不同表现形式。

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

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

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

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

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

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

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

      language Ruby

      main : expression+

      expression: condition | loop | assign | compute

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

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

 

转载于:https://my.oschina.net/u/563463/blog/489388

你可能感兴趣的文章
死锁和活锁
查看>>
JavaScript的简单继承实现案例
查看>>
<Linux命令行学习 第一节> CentOS在虚拟机的安装
查看>>
mysql设置字符集CHARACTER SET
查看>>
Perl完全自学手册图文教程
查看>>
python(5)字典
查看>>
wordpress拿WebShell
查看>>
脚本结构和执行
查看>>
warden创建容器的过程
查看>>
【c++】size_t 和 size_type的区别
查看>>
SpringBoot之浅析配置项解析(三)
查看>>
15.2. switchport trunk encapsulation dot1q 提示 invaild input at^marker.
查看>>
getline函数(精华版)
查看>>
互联网辅助代理IP软件的应用需守牢数据安全的“底线”
查看>>
快速排序及其优化
查看>>
程序猿生存指南-10 敲定工作
查看>>
LDAP密码认证例子
查看>>
2019程序媛面试之美少女战士
查看>>
黑马程序员——内部类
查看>>
校园的早晨
查看>>