为了实验,我正在寻找一种方法来修改
Ruby的一些基本代码,特别是解析器.我想知道这是否可行,更不用说使用宝石了.
我已经缩小了我需要在parser.c中更改为static int yylex()的代码.我打算尝试使用别名,但这似乎要求我更改parser.h,这是我无法在Gem中完成的,正如我所理解的那样.
这可以用宝石完成吗?
最佳答案 没有.
唯一可以访问的基本C代码是Ruby headers公开的代码.
解析/ lexing代码不会在那里暴露.
如果你想定义自定义语法,我会尝试(按顺序):
>稍微放松一下你的要求并定义一个DSL.Ruby拥有非常强大的元编程功能,可以在脚本中静态地执行任何操作,而是在运行时动态执行
>在Ruby中编写自定义解析器并发出有效的Ruby,然后再进行评估.丑陋,可能有点慢,但会让你做任何你想做的事情.
>改为修改mruby解析器. mruby专为希望能够高度自定义VM功能的嵌入式应用程序而设计.我怀疑他们是否考虑过解析器,但它仍然比使用MRI更加可行.