空白终结者& MakePlusRule in Irony

时间:2013-09-02 17:29:49

标签: c# parsing grammar irony

我正在尝试使用Irony创建一个相当简单的解析器,但我得出的结论是在这种特殊情况下反讽可能不合适。

这是我要解析的一个例子:

server_name  example.com  *.example.com  www.example.*; 

server_name  www.example.com   ~^www\d+\.example\.com$;

server_name   ~^(?<subdomain>.+?)\.(?<domain>.+)$;

我正在使用FreeTextLiterals以空格或分号作为终结符

var serverNamevalue = new FreeTextLiteral("serverNameValue", FreeTextOptions.None, " ", ";");

然后我使用MakePlusRule来获取一个或多个server_name值:

httpCoreServerName.Rule = "server_name" + httpCoreServerNameItems + semicolon;
httpCoreServerNameItems.Rule = MakePlusRule(httpCoreServerNameItems, serverNamevalue);

但是 - 我认为在这种情况下将空格作为FreeTextLiteral的终结符存在问题。当我运行它时,我得到一个解析器错误。如果我用空格替换另一个特定字符作为终结符(并且在调用MakePlusRule时也添加这个分隔符) - 它工作正常。

有没有人对我如何在Irony中处理这个问题有任何想法?

1 个答案:

答案 0 :(得分:1)

我在Irony project on Codeplex发布了这个问题,其中Roman Ivantsov-- Irony的开发者 - 确认在使用FreeSpxtLiterals的分号时解析器存在问题。

Roman已经帮助修复/修补了这个问题。我已经下载了最新的来源并且可以确认它解决了这个问题。