从Gem覆盖Ruby的基本C代码

为了实验,我正在寻找一种方法修改 Ruby的一些基本代码,特别是解析器.我想知道这是否可行,更不用说使用宝石了.

我已经缩小了我需要在parser.c中更改为static int yylex()的代码.我打算尝试使用别名,但这似乎要求我更改parser.h,这是我无法在Gem中完成的,正如我所理解的那样.

这可以用宝石完成吗?

解决方法

没有.

唯一可以访问的基本C代码Ruby headers公开的代码.
解析/ lexing代码不会在那里暴露.

如果你想定义自定义语法,我会尝试(按顺序):

>稍微放松一下你的要求并定义一个DSL.Ruby拥有非常强大的元编程功能,可以在脚本中静态地执行任何操作,而是在运行时动态执行
>在Ruby中编写自定义解析器并发出有效的Ruby,然后再进行评估.丑陋,可能有点慢,但会让你做任何你想做的事情.
>改为修改mruby解析器. mruby专为希望能够高度自定义VM功能的嵌入式应用程序而设计.我怀疑他们是否考虑过解析器,但它仍然比使用MRI更加可行.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...