अरे। मैं एएनटीएलआर के लिए नया हूँ। ANTLRWorks जादूगर मेरे लिए wrrited निम्नलिखित कोड:एएनटीएलआर "उपट्री का अप्रत्याशित अंत"
grammar test;
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
;
INT : '0'..'9'+
;
FLOAT
: ('0'..'9')+ '.' ('0'..'9')* EXPONENT?
| '.' ('0'..'9')+ EXPONENT?
| ('0'..'9')+ EXPONENT
;
COMMENT
: '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
| '/*' (options {greedy=false;} : .)* '*/' {$channel=HIDDEN;}
;
WS : (' '
| '\t'
| '\r'
| '\n'
) {$channel=HIDDEN;}
;
STRING
: '"' (ESC_SEQ | ~('\\'|'"'))* '"'
;
CHAR: '\'' (ESC_SEQ | ~('\''|'\\')) '\''
;
fragment
EXPONENT : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
fragment
HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ;
fragment
ESC_SEQ
: '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
| UNICODE_ESC
| OCTAL_ESC
;
fragment
OCTAL_ESC
: '\\' ('0'..'3') ('0'..'7') ('0'..'7')
| '\\' ('0'..'7') ('0'..'7')
| '\\' ('0'..'7')
;
fragment
UNICODE_ESC
: '\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
;
जब यह डिबगिंग, यह निम्न त्रुटि फेंकता है:
[22:45:49] error(100): C:\Documents and Settings\user\Desktop\test.g:0:0: syntax error: codegen: <AST>:0:0: unexpected end of subtree
कोई मुझे बता सकते हैं, त्रुटि है क्या कि वह कहाँ है और मैं कैसे ठीक कर सकते हैं यह?
धन्यवाद।
ध्यान दें कि चूंकि एएनटीएलआर एलएल (*) पार्सर्स का उत्पादन करता है, इसलिए यह आपके द्वारा पोस्ट किए गए बाएं-रिकर्सिव व्याकरण से निपट नहीं सकता है। http://www.antlr.org/wiki/display/ANTLR3/Left-Recursion+Removal –
आह, ठीक है - "एलआर" में समाप्त होने वाले एएनटीएलआर के साथ मैंने अभी माना है। – danben
:) सच है, नाम अन्यथा सुझाता है। एएनटीएलआर का मतलब है "** एल ** एंज्यूज ** आर ** मान्यता" के लिए एक और उपकरण। –