gpt4 book ai didi

c - 使用 MPC 库解析返回语法定义错误

转载 作者:行者123 更新时间:2023-11-30 16:57:44 25 4
gpt4 key购买 nike

我正在尝试使用 MPC 为名为 Wittgen ( https://esolangs.org/wiki/Wittgen ) 的语言定义语法

我定义了以下语法:

mpc_parser_t* Variable        = mpc_new("variable");
mpc_parser_t* Assign_Operator = mpc_new("assign");
mpc_parser_t* Remind_Operator = mpc_new("remind");
mpc_parser_t* Expr = mpc_new("expr");
mpc_parser_t* Envinronment = mpc_new("envinronment");

mpca_lang(MPCA_LANG_DEFAULT,
" variable : /[a-zA-Z0-9]+/ ;"
" assign : '=' ;"
" remind : '@' ;"
" expr : <variable> | <remind> <variable> '}' | <variable> <assign> <expr>+ '}' ;"
" envinronment : /^/<expr>+/$/ ;",
Variable, Assign_Operator, Remind_Operator, Expr, Envinronment);

当我尝试输入变量或提醒运算符(如“foo247”或“@foo247}”)时,它会正确解析它,但是当我尝试解析一个赋值(“foo247=foo}”)时,它只返回我

WITTGEN> foo357=foo}
<stdin>:1:7: error: expected one of 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ', one or more of one of 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ', '@' or end of input at '='

我找不到错误,我确定语法中定义有问题,但我在官方文档或示例中找不到任何线索

最佳答案

我不是 mpc 方面的专家,我可能是错的,事实上我现在也遇到了自己的问题,但我不认为它支持左递归。因此,由于 expr 包含在 expr 规则中,因此会导致错误。

编辑* 我能够通过移动部分扩展来解决我的问题。因此,您的等效方法是将变量一直移动到右侧,以便它首先尝试使用其他两个扩展进行解析。我不能确定这是否导致了您的问题,但它可能值得一试。

关于c - 使用 MPC 库解析返回语法定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39364747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com