微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从Gem覆盖Ruby的基本C代码

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

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

这可以用宝石完成吗?

解决方法

没有.

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐