忽略字符串文字匹配中的前导和尾随引号
Ignoring leading and tailing quotes in a string literal match
我想将 'Foo' 匹配为 Foo
,而不是 'Foo'
。
我有以下词法分析器规则:
STRING_LITERAL
: '\'' ( ~'\'' | '\'\'' )* '\''
;
但好像和引号相符。
我的访客是这样的:
public override IFilterExpression VisitLiteral_value(MagicHubFilterParser.Literal_valueContext context) {
return MakeExpression(context.GetText());
}
我知道那时我可以 trim 它,但我怀疑如果可能的话,在词法分析器级别处理它会更快更干净。
最好的方法是什么?
正如@CoronA 所建议的,在访问者中执行可能更规范。但是,我确实弄清楚了如何使用解析规则来做到这一点:
stringBody : ( ~'\'' | '\'\'' )*;
stringLiteral
: '\'' body=stringBody '\''
;
我想将 'Foo' 匹配为 Foo
,而不是 'Foo'
。
我有以下词法分析器规则:
STRING_LITERAL
: '\'' ( ~'\'' | '\'\'' )* '\''
;
但好像和引号相符。
我的访客是这样的:
public override IFilterExpression VisitLiteral_value(MagicHubFilterParser.Literal_valueContext context) {
return MakeExpression(context.GetText());
}
我知道那时我可以 trim 它,但我怀疑如果可能的话,在词法分析器级别处理它会更快更干净。
最好的方法是什么?
正如@CoronA 所建议的,在访问者中执行可能更规范。但是,我确实弄清楚了如何使用解析规则来做到这一点:
stringBody : ( ~'\'' | '\'\'' )*;
stringLiteral
: '\'' body=stringBody '\''
;