1

나는 복수 회선 방법 선언에 도움이 필요하며 .sublime-syntax for the Specman language을 작성하고 있습니다..sublime-syntax 다중 회선 기능 감지

메쏘드 선언의 다른 부분 뒤에 오는 키워드 is을 사용하여 메쏘드가 선언됩니다.

예.

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

내가 깨달은 질문을 쓰면서, 내가해야 할 일은 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 

희망.