首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >讽刺的是:没有StartEndSymbol的StringLiteral

讽刺的是:没有StartEndSymbol的StringLiteral
EN

Stack Overflow用户
提问于 2012-07-04 18:11:45
回答 3查看 1.7K关注 0票数 2

我正在使用Irony DSL框架来解析一种语言。该语言允许不带引号(")的字符串,即使它们包含点(.)或减号(-)等特殊字符。

如果我编辑我得到的文本文件,字符串两边有引号,它们就可以被很好地解析。但是,我想按原样读取这些文件。如何在不设置StartEndSymbol的情况下对字符串进行反讽解析?

我使用的是当前版本的Irony (2012_03_15)。

EN

回答 3

Stack Overflow用户

发布于 2012-07-25 19:11:13

看一下示例SQL语法。它允许标识符包含SELECT a.x FROM table'.'。在这种情况下,“Id”将是一个带有分隔符的列表。

代码语言:javascript
复制
var dot = ToTerm(".");
var dash = ToTerm("-");
var Id_simple = TerminalFactory.CreateSqlExtIdentifier(this, "id_simple"); //covers normal identifiers (abc) and quoted id's ([abc d], "abc d")
Id.Rule = MakePlusRule(Id, dot, Id_simple) | MakePlusRule(Id, dash, Id_simple)

 //Covers simple identifiers like abcd, and also quoted versions: [abc d], "abc d".
    public static IdentifierTerminal CreateSqlExtIdentifier(Grammar grammar, string name) {
      var id = new IdentifierTerminal(name);
      StringLiteral term = new StringLiteral(name + "_qouted");
      term.AddStartEnd("[", "]", StringOptions.NoEscapes);
      term.AddStartEnd("\"", StringOptions.NoEscapes);
      term.SetOutputTerminal(grammar, id); //term will be added to NonGrammarTerminals automatically 
      return id;
    }

如果它适用于SQL,那么它也应该适用于您。

票数 2
EN

Stack Overflow用户

发布于 2016-03-18 15:47:16

让我试着澄清一下。声明的"id“变量在SQL类:”//涵盖了简单的标识符,如abcd,也包括引号版本: abc d,"abc d“和下划线和数字,但没有更多。这一事实,CreateSqlExtIdentifier解析器包含点像"id”的一部分-是向下以下规则的结果:**"Id.Rule = MakePlusRule(Id, dot, Id_simple);"**作为一个解决方案,你可以声明特殊字符(如果没有很多)和自定义的规则,这将包含在代码中可能的外观。

例如:

specialSymbols.Rule = ToTerm(".") | "-" | ...etc.;

myId.Rule = id_simple | specialSymbols;

myIds.Rule = MakePlusRule(myIds<,Delimiter if nedeed>,myId);

最好的问候,迪奥尼斯。

票数 1
EN

Stack Overflow用户

发布于 2012-07-24 23:37:30

我也希望看到这样做的适当方式。目前,我只是通过在IdentifierTerminal的构造函数中设置必要的额外字符来使用它。

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

https://stackoverflow.com/questions/11326968

复制
相关文章

相似问题

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