空白终止符&;MakePlusRule的讽刺

本文关键字:MakePlusRule 讽刺 amp 终止 空白 | 更新日期: 2023-09-27 18:30:00

我试图使用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的调用中添加一个分隔符),它会很好地工作。

有人知道我在《讽刺》中该如何处理这件事吗?

空白终止符&;MakePlusRule的讽刺

我在Codeplex上的Irony项目上发布了这个问题,Irony的开发人员Roman Ivantsov证实在FreeTextLiterals中使用分号时解析器存在问题。

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