作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图将mRuby嵌入Max MSP对象中。我要设置的第一件事是在Max IDE控制台窗口中记录错误。为此,在使用mrb_parse_string解析代码(存储在C字符串中)后,我希望解析器的error_buffer数组中存在错误,但是此数组中的结构始终为空(lineno和column设置为0并设置消息集)到NULL),即使出现错误也是如此。
在解析代码之前,是否有一种特殊的方法来设置解析器,以便在发生错误时正确填充其error_buffer数组?我调查了mirb来源,但看起来并不像它。我迷路了。这是我正在使用的代码,取自我用作测试的一个小型C程序:
mrb_state *mrb;
char *code;
struct mrb_parser_state *parser;
parser = mrb_parse_string(mrb, code, mrbc_context_new(mrb));
if (parser->nerr > 0) {
for(i = 0; i < parser->nerr; i++) {
printf("line %d:%d: %s\n", parser->error_buffer[i].lineno,
parser->error_buffer[i].column,
parser->error_buffer[i].message);
}
return -1;
}
[1,1,1]]
line 1:8: syntax error, unexpected ']', expecting $end
line 0:0: (null)
mrb_parser_state
结构的
error_buffer
为空,这令人惊讶,因为解析器确实看到了错误。
最佳答案
对不起,完全误解了您的问题。
因此,您要:
MRB_DISABLE_STDIO
工作。 struct mrb_parser_state *parser;
parser = mrb_parse_string(mrb, code, mrbc_context_new(mrb));
struct mrbc_context *cxt;
struct mrb_parser_state *parser;
cxt = mrbc_context_new(mrb);
cxt->capture_errors = TRUE;
parser = mrb_parse_string(mrb, code, cxt);
build_config.rb
,所以我对此不多说。
MRB_DISABLE_STDIO
是用于构建mruby的编译标志,因此您需要使用
build_config.rb
传递它,例如:
cc.defines << %w(MRB_DISABLE_STDIO)
[1,1,1]]
必须为
[1,1,1]
)。
1:8
表示第一行的第8列(指向不必要的
]
),因此看来您的C代码对我来说正常工作。
prog.rb:1: syntax error, unexpected ']', expecting end-of-input
[1,1,1]]
^
关于parsing - 嵌入mRuby : retrieving mrb_parser_message after parse error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43192423/
我试图将mRuby嵌入Max MSP对象中。我要设置的第一件事是在Max IDE控制台窗口中记录错误。为此,在使用mrb_parse_string解析代码(存储在C字符串中)后,我希望解析器的erro
我是一名优秀的程序员,十分优秀!