.sublime-syntax多行函数检测

时间:2017-03-14 06:20:22

标签: regex sublimetext3 syntax-highlighting regex-lookarounds specman

我正在写一个.sublime-syntax for the Specman language,需要多行方法声明的帮助。

使用关键字is声明方法,该关键字位于方法声明的大多数其他部分之后。

E.g。

fwd_init() @driver.clock is {

add(x : uint, y : uint) is also {

private do_stuff(field : my_type) is only {

等...

我的问题是,如果将大量参数传递给方法,声明的部分可能会很长,所以我倾向于将该行拆分为多行。

我无法匹配方法的语法,因为我需要多行匹配。

以下是我目前的情况,但它不起作用:

methods:
- match: (?=^\s*(?:private|static|final)?\s+[a-zA-Z](?:[a-zA-Z0-9_]+)?\s*\()
  set:
    - match: (?=\bis\b)
      push: method-declaration

基本上我想回到前瞻,可能匹配该函数,以防它不是一个函数弹出它。

1 个答案:

答案 0 :(得分:1)

当我写下我意识到的问题时,我需要做的就是将method-declaration推到堆栈上,首先对is做一个否定的预测。

如下:

methods:
  - match: (?=^\s*(?:private|static|final)?\s+[a-zA-Z](?:[a-zA-Z0-9_]+)?\s*\()
    push: method-declaration

method-declaration:
  - match: (?!is(?:\s+)(only|first|also)?)
    pop: true
  - ... parsing of the method declaration

希望这可以帮助其他人寻找有关该主题的信息。