1

我目前正在和一个朋友一起创建一种语言,我想在 jEdit 中为它提供一个突出显示。它的语法其实很简单。函数只能匹配此模式: $function_name(arguments)

请注意,我们的解析器目前在没有关闭标记(如 C 样式的半列)的情况下工作,我们希望保留此功能。

我创建了我的 jEdit 模式,并且(几乎)成功地用<SPAN_REGEXP>. 我是这样做的:

<SPAN_REGEXP HASH_CAR="\$" TYPE="KEYWORD3" DELEGATE="ARGS">

<BEGIN>\$[A-Za_z0-9_]*\s*\(</BEGIN>

<END>)</END>

</SPAN_REGEXP>

但这还不够好。

这就是我想要的:

  • 整个功能骨架的颜色相同:$func( )
  • 特殊突出显示(已在规则ARGS集中定义)%content1%$func(%content1%)
  • 不跟在 a 后面的括号不加亮$func
  • 授权替代多行语法,例如

$func

(

args

)

目前没有突出显示。我猜我需要更改我的<BEGIN>正则表达式以接受换行符,但似乎 jEdit 无法匹配多行正则表达式以突出显示,尽管他在搜索和替换方面做得很好!

我尝试了(?s)(?m)标志,[\d\D]*解决方法,[\r\n]*但它从来没有奏效。

所以,这是我的问题:

  • 有谁知道如何在 jEdit 模式下匹配多行正则表达式<SPAN_REGEXP>
  • 如果没有,有没有人知道如何做我需要的?
4

1 回答 1

1

如帮助中所述,SPAN_REGEXP 不支持多行正则表达式。您当然可以指定多行正则表达式,但它们只针对单独的行进行检查,因此永远不会匹配。您可以将功能请求发布到 jEdit 的功能请求跟踪器,但如果还没有的话。

于 2012-03-01T21:25:36.393 回答