2012-12-13 3 views
2

Simulink의 대상 언어 컴파일러 (TLC) 파일에 대해 Sublime Text 2 구문 형광펜을 작성하려고합니다. 이것은 자동 생성 코드를위한 스크립팅 언어입니다. TLC에서, 구문은 나는 이것이이 작동정규식 일치하는 대괄호 쌍

%<.+?> 

입니다 맞게 쓴

%<token> 

정규 표현식은 (C 또는 C++ 포인터를 역 참조 유사) 토큰의 내용을 확장 대부분의 경우는, 그러나 문은 줄에 자체이다이 경우 욕심 수정에 정규 표현식을 수정 다음 문

%<LibAddToCommonIncludes("<string.h>")> 

실패,하지만 몇 가지 다른 경우에 실패합니다. 그래서 그것은 옵션이 아닙니다.

해당 행의 경우 강조 표시가 두 번째 대신 첫 번째 >에서 멈 춥니 다. 어떻게이 사건을 다루기 위해 정규식을 수정할 수 있습니까?

어떤 수의 중첩 된 숫자도 처리 할 수있는 일반적인 표현이 있다면 좋을 것입니다. 예 :

%<...<...>...<...<...>...>...> 

도트는 선택 문자입니다. 위의 표현은 모두 일치해야합니다.

+0

구문 형광펜 작성에 대해서는 알지 못하지만 다른 언어를 보았습니까? 대괄호 일치를 수행하는 코드가 있어야합니다. http://sublimetext.info/docs/en/extensibility/syntaxdefs.html – nhahtdh

+0

중첩 된 꺾쇠 괄호가 문자열의 일부로 처리되도록 문자열과 그 내용과 일치하는 정규식 부분을 작성해야합니까? 그것은'([^ "] |"[^ "] *") *'처럼 조잡 할 수 있습니다. –

+0

@JonathanLeffler 질문이 업데이트되었습니다. 나는 그것이 어딘가에 문자열이있는 것에 의존하지 않기를 바랄 것이다. 정규 표현식은 중첩 된'<>'쌍을 건너 뛰어야 만한다. – Praetorian

답변

2

정규 표현식을 사용하는 일반적인 방법은 어렵습니다. this thread에서 잘 설명되어 있습니다.

정규식을 통해 2 < 문자를 구체적으로 일치 시키려고 할 수 있습니다. %<.+?<.+?>.+?>과 같은 것입니다.

+0

내가 원하는 것은 아니지만, 내가 원하는 것이 왜 가능하지 않을지에 대한 링크 된 대답의 훌륭한 설명입니다. – Praetorian

0

왜 "?" ? 시도하지 않고. 그것은 라인의 유일한 토큰의 경우 ^ %는 <> $ 이 공백에 의해 둘러싸여있는 경우 (+.) : \의 % <> \의 이 Btw는 ... 그룹 1의 내용을 가져올 것이다 (+). 필요한 경우.