【问题标题】:DParser- warning: trying to write code to binary fileDParser-警告:试图将代码写入二进制文件
【发布时间】:2013-08-07 03:26:03
【问题描述】:

我有一个为DParser 编写的大型语法并使用 Python 绑定。当我第一次运行解析器并且 DParser 生成它的内部表时,我收到了一些类似这样的警告:

warning: trying to write code to binary file
warning: trying to write code to binary file
warning: trying to write code to binary file

不确定这些警告的来源是什么。我唯一能找到的是 DParser 源代码“write_tables.c”:

write_code(FILE *fp, Grammar *g, Rule *r, char *code,
           char *fname, int line, char *pathname) 
{
    char *c;

    if ( !fp ) {
        d_warn("trying to write code to binary file");
        return;
    }
    ...
}

任何提示或想法将不胜感激。

【问题讨论】:

  • 我想说你没有给 Dparser 一个文件名来写它生成的表。你读过它的使用文档吗?
  • 我当然已经阅读了文档。自动选择表的文件名 (d_parser_mach_gen.g.d_parser.dat, d_parser_mach_gen.g.md5)。我发现这些警告的问题是因为我的语法有错误,并且在某些情况下我忘记在 [ ] 周围添加引号。像 [ example_non_terminal ]。它将 example_non_terminal 作为字符集。其中一些是导致问题的原因。
  • 您可以将您对问题的发现添加为答案(是的,您可以回答您自己的问题),这样这个问题就可以结束了。 [我不得不承认,没有引用语法元素和你得到的错误信息之间的因果关系,完全让我无法理解]。

标签: parsing compiler-construction parser-generator glr


【解决方案1】:

我发现这些警告的问题是因为我的语法有错误,并且在某些情况下我忘记在 [ ] 周围添加引号。喜欢:

 [ example_non_terminal ]

它以 example_non_terminal 作为字符集。其中一些是导致问题的原因。正确的语法应该是:

 '[' example_non_terminal ']'

【讨论】:

    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多