2013-09-03 11 views
5

antlr4のために良いCSS文法がありますか? antlr3にはいくつかの文法があることは知っていますが、v4で追加された「レクサーモード」なしでCSSを解析するのは簡単ではありません。どうして?Antlr v4の優れたCSS文法

には、以下のCSSセレクタを考えてみましょう:ほとんどの文法で

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

、空白は無視されます。しかし、空白を無視すると、上の2つのセレクタをパーサーレベルで区別することは不可能になります。

また、空白を無視しないと、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

のReadmeに記載されているように、それはCSSファイルの数に取り組んでいます - しかし、 @importまたは@includeの完全な構文は処理されません。