解析语言是一个动态的过程

每种语言都有一些动态的规则,是在解析过程中确定的。

例如函数名,如果没有声明,直接使用,就是错误的。

如果用语言本身的语法检查工具进行检查,会杜绝语法错误,但不能分辨是关键字还是函数名。

还有一些常量的设置,变量的设置。

Lua 的多行注释: [[=[[ … ]]=]] 中间等号的数量必须是对应的

Perl6 的 POD,从 =begin flag … =end flag 也是固定的

这个用反向引用就能解决:

/=begin $<flag>=(\w+) .*? =end $<flag>/

注意:在字符串环境中 $ 会返回字符串。

对于函数定义该怎么处理呢?

Perl 语系的函数定义可以放在后面,也就是代码解析式分步进行的,解析函数是在解析代码之前。当然也可以说声明检查是在编译期,也就是第一步还是从头到尾解析了代码,但没有检查许多错误。在接下来的步骤中,才会检查变量声明问题。

我的方向是代码解析,转换。应用的领域有很多,代码质量检查。但代码是一个需要不断维护的资产,不但要进行质量检查,还要对其进行维护,以适应变化的需求。

可以写一本书,并经常更新,同时发布各种版本。

做一个语言转换的项目,并持续更新。

你可能感兴趣的:(解析语言是一个动态的过程)