在GtkSourceView语言规范中,如何将数字与可选的字母后缀匹配



我正在编写一个新的GtkSourceView语言规范;遵循教程和其他互联网资源中的信息。我定义的语言可以将数字作为:

  1. 一个或多个digit字符
  2. 可选地,附加(例如在末尾)字母LlNn

示例:

1000
1234L
987654321n

请注意,这只是少数可能的定义之一。

到目前为止,我已经写了(大约(定义的其他部分已提交)):

<context id="number" style-ref="decimal" end-at-line-end="true">
<start>(d+)([NnlL]?)</start>
<end>D</end>
</context>

我将其解释为:_Anumber以一个或多个数字字符开头,可选地后跟以下任何字符:NnlL,当遇到非数字数字(例如空格、字母)时结束

不幸的是,这并不完全有效,因为附加任何指定的字符(或任何字符)都会导致它失败(在这种情况下,这意味着不突出显示。)

关于如何匹配这种模式,有什么想法吗?提前感谢!:)

您不需要容器上下文;这适用于字符串文字和注释之类的内容,在这些内容中,您可以通过开头和结尾模式来识别它,并且它可能包含其他上下文。(例如,字符串文字可能包含像n这样的转义序列,您可能希望以不同的方式突出显示,如本屏幕截图所示。)您的"数字"标记可以与单个简单的regex完全匹配,这意味着您想要一个简单上下文:

<context id="number" style-ref="decimal">
<match>bd+[NnlL]?b</match>
</context>

免责声明:我从未使用过GtkSourceView,但我使用过其他基于正则表达式的语法高亮器,包括EditPad Pro和我自己用Java编写的一个。

相关内容

  • 没有找到相关文章

最新更新