首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Marpa的标记不正确

Marpa的标记不正确
EN

Stack Overflow用户
提问于 2013-06-20 08:51:54
回答 1查看 141关注 0票数 6

我有一个相当大的Marpa语法(用于解析XPath),并且我遇到了一个关于标记化的问题。我在下面创建了一个最小的破坏示例:

代码语言:javascript
复制
use strict;
use warnings;
use Marpa::R2;

my $grammar = Marpa::R2::Scanless::G->new(
    {
        source => \(<<'END_OF_SOURCE'),
            :default ::= action => ::array
            :start ::= Start

            Start  ::= Child DoubleColon Token

            DoubleColon ~ '::'
            Child ~ 'child'
            Token ~
                word
                | word ':' word
            word ~ [\w]+

END_OF_SOURCE
    }
);
my $reader = Marpa::R2::Scanless::R->new(
    {
        grammar => $grammar,
        trace_terminals => 1,
    }
);

my $input = 'child::book';
$reader->read(\$input);

此脚本打印以下内容:

代码语言:javascript
复制
Registering character U+0063 as symbol 10: [[\w]]
Registering character U+0063 as symbol 3: [[c]]
Registering character U+0068 as symbol 10: [[\w]]
Registering character U+0068 as symbol 4: [[h]]
Registering character U+0069 as symbol 10: [[\w]]
Registering character U+0069 as symbol 5: [[i]]
Registering character U+006c as symbol 10: [[\w]]
Registering character U+006c as symbol 6: [[l]]
Registering character U+0064 as symbol 10: [[\w]]
Registering character U+0064 as symbol 7: [[d]]
Registering character U+003a as symbol 1: [[\:]]
Rejected lexeme @0-5: Token; value="child"
Accepted lexeme @0-5: Child; value="child"
Registering character U+0062 as symbol 10: [[\w]]
Error in SLIF G1 read: No lexeme found at position 6
* String before error: child::
* The error  was at line 1, column 8, and at character 0x0062 'b', ...
* here: book

我希望输入被标记为[Child] [DoubleColon] [word]。正如终端跟踪所示,只读取和处理了一个冒号字符。它似乎试图将字符串的开头标记为[word] [':'] [word],但中途失败了。如果删除语法(| word ':' word)的第10行,则不会再抛出错误。

我尝试为DoubleColon (:lexeme ~ <DoubleColon> priority > 1)创建一个优先级,但没有成功。谁能告诉我怎么做才能让这个语法正确地解析输入的字符串?它仍然需要能够解析child::ns:book,等等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-20 10:53:33

这似乎是Marpa::R2当前版本2.058中的一个错误。我向你道歉,并感谢你对这个问题的仔细描述。

我有一个修复,它通过了测试套件,我很快就会发布一个新的版本。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17203668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档