antlr4에 대해 좋은 CSS 문법이 있습니까? 나는 antlr3에 대한 몇 가지 문법을 알고 있지만, CSS는 v4에 추가 된 "렉서 모드"없이 구문 분석하는 것이 간단하지 않습니다. 왜? 대부분의 문법에서Antlr v4에서 좋은 CSS 문법
.hello.world { /* ... */ }
.hello .world { /* ... */ }
는, 공백은 단순히 무시된다 :
는 다음 CSS 선택기를 생각해 보자. 그러나 공백을 무시하면 파서 수준에서 위의 두 선택기를 구분할 수 없게됩니다.
공백을 무시하지 않으면 문법이 WS에서 꽤 시끄 럽니? 또는 WS * 패턴은 공백 문자가 인 경우 대부분이므로 셀렉터 내에서 발생하지 않는 한 의미가 없습니다. 의 모드가 올 antlr4 곳에 있기 때문에 당신이 다른 컨텍스트를 입력 할 때마다 렉서 (즉 은 "선택"컨텍스트 내 공백을 무시하지 않음)에 대한 새로운 규칙을 정의 할 수 있습니다 렉서 모드를 지원한다
.
즉 우리가 지금 어쨌든 ;-)
우리는 훌륭한 오픈 소스 CSS 파서 라이브러리 인 phloc-css를 사용했다. 최신 CSS 사양에 대한 큰 지원과 매우 적극적으로 개발되었습니다. – gzak
아마도 도움이 될만한 http://www.antlr2.org/article/whitespace/ (즉, 다른 모든 것처럼 토큰화할 수 있습니다. charVocabulary는 약 3.3 이후로 필요하지 않습니다) –