2010-11-01 16 views
8

में @header का उपयोग करके मुझे एंटएलआर में "@header" या किसी अन्य @ नियम को काम करने में परेशानी हो रही है।एएनटीएलआर

grammar test; 

options { 
    language = CSharp2; 
} 

@header { 
    using System.Collections.Generic; 
} 

tokens { 
    TEST; 
} 

something : TEST*; 

TEST : '0' .. '9'; 

इस ऑनलाइन ANTLR प्रलेखन और विभिन्न अन्य उदाहरण का पालन करने लगता है, लेकिन जब मैं या तो ANTLRWorks v1.4 या ANTLR जार v3 के माध्यम से उत्पादन उत्पन्न करने के लिए प्रयास करें: एक बहुत ही बुनियादी व्याकरण, इस तरह के साथ। 2, मुझे निम्न त्रुटि मिलती है:

Cannot generate the grammar because:

error(100): [path]\test.g:11:1 syntax error: antlr: [path]\test.g:11:1 unexpected token: tokens {

जो मुझे हिला नहीं लग रहा है। मैं व्याकरण में शामिल @header के बिना सफलतापूर्वक लेजर और पार्सर उत्पन्न करने में सक्षम हूं। मैं विंडोज पर जावा का नवीनतम संस्करण है:

java version "1.6.0_22" Java(TM) SE Runtime Environment (build 1.6.0_22-b04) Java HotSpot(TM) Client VM (build 17.1-b03, mixed mode, sharing)

मुझे लगता है यह कुछ पत्थर सरल है और मैं सिर्फ यह करने के लिए अंधा हूँ, इसलिए स्पष्ट जवाब पर लाने के लिए कृपया।

उत्तर

9

त्रुटि यह है क्योंकि उन ब्लॉकों को एक निश्चित क्रम में प्रकट होने की आवश्यकता है।

  1. विकल्पों
  2. टोकन
  3. @header
  4. @members

फिर अपने नियम

+0

आप सही हैं, सर। बहुत धन्यवाद। – Moxen

+0

मेरा मानना ​​है कि एएनटीएलआर (v4) के अगले संस्करण में, इन ब्लॉकों का क्रम कोई फर्क नहीं पड़ता। –

संबंधित मुद्दे