我想匹配Foo'为Foo
,而不是'Foo'
。
我有以下词法分析器规则:
STRING_LITERAL
: '\'' ( ~'\'' | '\'\'' )* '\''
;
但似乎与报价相符。
我的访客看起来像这样:
public override IFilterExpression VisitLiteral_value(MagicHubFilterParser.Literal_valueContext context) {
return MakeExpression(context.GetText());
}
我知道我可以修剪它,但我怀疑如果可能的话,在词法分析器级别处理它会更快更清洁。
最好的方法是什么?
答案 0 :(得分:0)
正如@CoronA所暗示的那样,访问者可能会更加规范。但是,我确实弄清楚如何使用解析规则来执行此操作:
stringBody : ( ~'\'' | '\'\'' )*;
stringLiteral
: '\'' body=stringBody '\''
;