2013-09-03 2 views
5

antlr4에 대해 좋은 CSS 문법이 있습니까? 나는 antlr3에 대한 몇 가지 문법을 알고 있지만, CSS는 v4에 추가 된 "렉서 모드"없이 구문 분석하는 것이 간단하지 않습니다. 왜? 대부분의 문법에서Antlr v4에서 좋은 CSS 문법

.hello.world { /* ... */ } 
.hello .world { /* ... */ } 

는, 공백은 단순히 무시된다 :

는 다음 CSS 선택기를 생각해 보자. 그러나 공백을 무시하면 파서 수준에서 위의 두 선택기를 구분할 수 없게됩니다.

공백을 무시하지 않으면 문법이 WS에서 꽤 시끄 럽니? 또는 WS * 패턴은 공백 문자가 인 경우 대부분이므로 셀렉터 내에서 발생하지 않는 한 의미가 없습니다. 의 모드가 올 antlr4 곳에 있기 때문에 당신이 다른 컨텍스트를 입력 할 때마다 렉서 (즉 은 "선택"컨텍스트 내 공백을 무시하지 않음)에 대한 새로운 규칙을 정의 할 수 있습니다 렉서 모드를 지원한다

.

즉 우리가 지금 어쨌든 ;-)

+1

우리는 훌륭한 오픈 소스 CSS 파서 라이브러리 인 phloc-css를 사용했다. 최신 CSS 사양에 대한 큰 지원과 매우 적극적으로 개발되었습니다. – gzak

+0

아마도 도움이 될만한 http://www.antlr2.org/article/whitespace/ (즉, 다른 모든 것처럼 토큰화할 수 있습니다. charVocabulary는 약 3.3 이후로 필요하지 않습니다) –

답변

1

을 사용하고있는 버전 당신이 이미 발견했습니다 상상의 나는, 그래서 그것이 제대로 공백을 처리뿐만 아니라 antlr3에 대한 문법을 ​​받아 들일 것이다, 말했다 너무 오래 전에 게시되었던이 질문에 대한 대답. 심지어 여전히 : CSS3에 대한 좋은 ANTLR v4의 문법 여기 ANTLR Github에서 찾을 수 있습니다

: - 그것은, 그러나 추가 정보에 명시된 바와 같이

Antlr v4 CSS3 Grammar

, 그것은 CSS 파일의 수를 작동 @import 또는 @include의 전체 구문을 처리하지 않습니다.