2013-09-03 15 views
5

में अच्छा सीएसएस व्याकरण एंटरल 4 के लिए वहां कोई अच्छा सीएसएस व्याकरण है? मुझे पता है कि antlr3 के लिए कुछ व्याकरण हैं, लेकिन यह पता चला है कि सीएसएस "लेक्सर मोड" के बिना पार्स करने के लिए तुच्छ नहीं है, जो v4 में जोड़े गए थे। क्यूं कर?Antlr v4

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

सबसे व्याकरण में, खाली स्थान के बस नजरअंदाज कर दिया है:

निम्नलिखित CSS चयनकर्ताओं पर विचार करें। लेकिन यदि आप व्हाइटस्पेस को अनदेखा करते हैं, तो पार्सर स्तर पर उपरोक्त दो चयनकर्ताओं के बीच अंतर करना असंभव हो जाता है।

फिर फिर, यदि आप व्हाइटस्पेस को अनदेखा नहीं करते हैं, तो व्याकरण डब्ल्यूएस के साथ बहुत शोर हो जाता है? या हर जगह डब्ल्यूएस * पैटर्न, चूंकि व्हाइटस्पेस अधिकतर अर्थहीन है जब तक कि यह किसी चयनकर्ता के भीतर न हो।

है कौन कहाँ से मोड antlr4 में आते हैं क्योंकि समर्थन lexer मोड के लिए आप lexer जब भी आप विभिन्न संदर्भों में प्रवेश (अर्थात "चयनकर्ता" संदर्भ में खाली स्थान के नजरअंदाज नहीं करते हैं) के लिए नए नियमों को परिभाषित कर सकते हैं के साथ,।

कहा कि, मैं साथ ही इतने लंबे समय के रूप में यह व्हाइटस्पेस ठीक से हैंडल, के रूप में उस संस्करण हम अब वैसे भी ;-)

+1

हम केवल एक उत्कृष्ट ओपन सोर्स सीएसएस पार्सर लाइब्रेरी, फ्लोक-सीएसएस का उपयोग कर समाप्त हो गए। नवीनतम सीएसएस विनिर्देश के लिए महान समर्थन, और बहुत सक्रिय रूप से विकसित। – gzak

+0

शायद सहायक http://www.antlr2.org/article/whitespace/ (यानी बस इसे सबकुछ की तरह टोकनइज़ करें, चार के बाद से चारवेंबुलरी की आवश्यकता नहीं है) –

उत्तर

1

उपयोग कर रहे हैं मुझे लगता है कि आप पहले से ही एक मिल गया है है antlr3 के लिए किसी भी व्याकरण को स्वीकार करेंगे इस सवाल का जवाब दें क्योंकि इसे बहुत पहले पोस्ट किया गया था। यहां तक ​​कि अभी भी:

CSS3 के लिए एक अच्छा antlr v4 व्याकरण antlr Github यहाँ पर पाया जा सकता:

Antlr v4 CSS3 Grammar

के रूप में रीडमी में कहा गया है, यह सीएसएस फ़ाइलों के लिए कार्य करता है - हालांकि, यह @import या @include के पूर्ण वाक्यविन्यास को संभाल नहीं करता है।