帖子

[命令词识别] 语法文件中文字符下构建语法失败(c#开发离线命令词功能)

[复制链接]
  • TA的每日心情
    郁闷
    2016-12-14 22:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    13915  楼主| 奇/mg 发表于 2016-12-14 22:55:27 1#
    本帖最后由 奇/mg 于 2016-12-15 12:27 编辑

    C#调用封装的C++库 开发离线命令词功能,
    bnf文件中有中文字符,调用QISRBuildGrammar 构建语法 会报:
    23300
    ERROR_AITALK_GRM_ERR
    语法错误

    把中文全换掉成数字或者字母,则正常!(语法应该是没错的,从官方demo里拷的,也在网上找过其它写好的)
    把语法文件头的声明,文件编码都统一utf8试过,还是不行
    请问是什么原因?

    1. #BNF+IAT 1.0 UTF-8;
    2. !grammar Commanda;

    3. !slot <Want>;  //声明槽,槽是可以在程序中动态修改的规则

    4. !start <CommandStart>;

    5. <CommandStart>:[<Want>]<Dial>;
    6. <Want>:我想|我要|请|帮我|我想要|请帮我;

    7. <Dial>:<DialAction><DialContactName>[<DialSuf>];
    8. <DialAction>:[<DialActionLine>]<DialActionDo>;
    9. <DialActionLine>:内线|外线;
    10. <DialActionDo>:打给!id(10001)|打电话给!id(10001)|打个电话给!id(10001)|打一个电话给!id

    11. (10001)|呼叫!id(10001);
    12. <DialContactName>:丁伟|张三|王五|小明;        


    13. <DialSuf>:打电话!id(10001)|打个电话!id(10001)|打一个电话!id(10001)|
    14.           拨打电话!id(10001)|拨电话!id(10001)|拨个电话!id(10001)|呼个电话!id(10001)|
    15.           的电话!id(10001)|的号码!id(10001)|的手机!id(10001)|
    16.           的办公电话!id(10001)|的移动号码!id(10001)|的联通号码!id(10001)|
    17.           的电信号码!id(10001)|客服电话!id(10001);
    复制代码




    百花 发表于 2016-12-15 09:30:49
    2#
    语法错误构建语法失败参考文档和demo


    使用道具 举报 回复
     楼主| 奇/mg 发表于 2016-12-15 12:29:37
    3#
    百花 发表于 2016-12-15 09:30
    语法错误构建语法失败参考文档和demo

    语法应该是没有错误的,从官方demo里拷过来的,而且把对应的中文字符全换成数字或者字母就没问题
    使用道具 举报 回复
    taozhang9@iflyt 发表于 2016-12-15 14:22:29
    4#
    奇/mg 发表于 2016-12-15 12:29
    语法应该是没有错误的,从官方demo里拷过来的,而且把对应的中文字符全换成数字或者字母就没问题
    ...

    hi,
    1.语法内容确保正确的话,还报错,那么有可能是调用出问题了。检查看看传入的语法内容的*长度*对不对。
    2.抓一份日志来
    使用道具 举报 回复
     楼主| 奇/mg 发表于 2016-12-15 15:19:20
    5#
    taozhang9@iflyt 发表于 2016-12-15 14:22
    hi,
    1.语法内容确保正确的话,还报错,那么有可能是调用出问题了。检查看看传入的语法内容的*长度*对不对 ...

    非常感谢!C# 直接取的字符串的length,不准确,汉字算的1个字符,所以长度没传对!现在构建成功!
    使用道具 举报 回复
    443906547@qq.co 发表于 2019-5-25 11:27:51
    6#
    麻烦问下楼主,你用的是win7系统还是win10系统?
    win10系统下会出现语法构建失败的错误
    win7则正常。
    请问你有遇到过吗?有没有解决方案?
    非常感谢。
    使用道具 举报 回复