2015-10-31 14 views
5

मैं अब (अब) एक भाषा डिजाइन करने के लिए एएनटीएलआर 4 और सी # का उपयोग करने की कोशिश कर रहा हूं, और अब तक मैं इसके साथ झुका रहा हूं। इस प्रक्रिया में, मैंने एक सरल गणितीय अभिव्यक्ति मूल्यांकनकर्ता को आजमाने और बनाने का निर्णय लिया। इस प्रक्रिया में, मैं इसके लिए निम्नलिखित ANTLR व्याकरण बनाया:जब मैं एएनटीएलआर 4 के साथ सी # उत्पन्न करने का प्रयास करता हूं तो ये विषम त्रुटियां क्या होती हैं?

grammar Calculator; 

@parser::members 
{ 
    protected const int EOF = Eof; 
} 

@lexer::members 
{ 
    protected const int EOF = EOF; 
    protected const int HIDDEN = Hidden; 
} 

program : expr+ ; 

expr : expr op=('*' | '/') expr 
    | expr op=('+' | '-') expr 
    | INT 
    | '(' expression ')' 
    ; 

INT : [0-9]+ ; 
MUL : '*' ; 
DIV : '/' ; 
ADD : '+' ; 
SUB : '-' ; 
WS : (' ' | '\r' | '\n') -> channel(HIDDEN) ; 

जब मैं इस आदेश का उपयोग कर इसे से सी # कोड जनरेट करने का प्रयास:

java -jar C:\...\antlr-4.2-complete.jar -DLanguage=CSharp .\...\Grammar.g4 

मैं इन अजीब त्रुटियों मिलती है:

error(50): C:\Users\Ethan\Documents\Visual Studio 2015\Projects\CypressLang\CypressLang\Source\.\Grammar\CypressGrammar.g4:1:0: syntax error: 'ï' came as a complete surprise to me  
error(50): C:\Users\Ethan\Documents\Visual Studio 2015\Projects\CypressLang\CypressLang\Source\.\Grammar\CypressGrammar.g4:1:1: syntax error: '»' came as a complete surprise to me  
error(50): C:\Users\Ethan\Documents\Visual Studio 2015\Projects\CypressLang\CypressLang\Source\.\Grammar\CypressGrammar.g4:1:2: syntax error: '¿' came as a complete surprise to me 
error(50): C:\Users\Ethan\Documents\Visual Studio 2015\Projects\CypressLang\CypressLang\Source\.\Grammar\CypressGrammar.g4:1:3: syntax error: mismatched input 'grammar' expecting SEMI 

इन त्रुटियों के कारण क्या हो सकता है, और मैं उन्हें कैसे ठीक कर सकता हूं? इस समय मेरा सबसे अच्छा अनुमान यह है कि विजुअल स्टूडियो फ़ाइल की शुरुआत में विषम पात्रों को सम्मिलित कर रहा है, और मैं उन्हें हटा नहीं सकता।

उत्तर

4

आज एक अच्छा दिन नहीं है।

विजुअल स्टूडियो ने मेरे साथ गड़बड़ करने का फैसला किया और मेरी सभी फाइलों के लिए मेरे फ़ाइल प्रारूपों को यूटीएफ -8 में बदल दिया। मुझे बस इतना करना था कि File > Advanced Save Settings पर जाएं, और एन्कोडिंग को यूएस-एएससीआईआई में बदलें। इसने शुरुआत में डाले गए अजीब पात्रों को हटा दिया, और मेरी समस्याओं का हल (सबसे अधिक)।

+2

ये "विषम" अक्षर सामाजिक बीओएम ([बाइट ऑर्डर मार्क] (https://en.wikipedia.org/wiki/Byte_order_mark) है)। फ़ाइल को यूटीएफ -8 में संग्रहीत किया गया है, जहां बीओएम में 3 बाइट होते हैं (जिनके लिए आपको चेतावनी मिली है)। आप बीओएम से छुटकारा पाने के लिए, यूनिकोड फ़ाइल को या डब्ल्यू/ओ बीओएम स्टोर कर सकते हैं और एएससीआईआई एन्कोडिंग पर वापस लौटना नहीं है। –

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

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