加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

从Gem覆盖Ruby的基本C代码

发布时间:2020-12-17 02:10:03 所属栏目:百科 来源:网络整理
导读:为了实验,我正在寻找一种方法来修改 Ruby的一些基本代码,特别是解析器.我想知道这是否可行,更不用说使用宝石了. 我已经缩小了我需要在parser.c中更改为static int yylex()的代码.我打算尝试使用别名,但这似乎要求我更改parser.h,这是我无法在Gem中完成的,正
为了实验,我正在寻找一种方法来修改 Ruby的一些基本代码,特别是解析器.我想知道这是否可行,更不用说使用宝石了.

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

这可以用宝石完成吗?

解决方法

没有.

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读