के रूप में लोड नहीं हो सकता है मैं अपने व्याकरण लिखने के लिए एंटरल 4 का उपयोग कर रहा हूं। मैं अपने व्याकरण द्वारा उत्पन्न गुई तीन देखना चाहता हूं। जब मैं एंटरल साइट (http://www.antlr.org/wiki/display/ANTLR4/Getting+Started+with+ANTLR+v4) पर उदाहरण चलाने की कोशिश करता हूं तो यह काम करता है, लेकिन अगर मैं अपने व्याकरण के साथ प्रयास करता हूं तो यह काम नहीं करता है। विशेष रूप से मैंने नेटबीन और एंटरवर्क्स 2 पर व्याकरण को चलाने के लिए "टेस्टरिग में चलाएं" आदेश के साथ भी प्रयास करने की कोशिश की है, लेकिन परिणाम एक ही त्रुटि संदेश है "" समस्याएं लेक्सर या पार्सर के रूप में लोड नहीं कर सकती "।antlr 4 लेक्सर या पार्सर
यह मेरी व्याकरण है:
script
: include*
systemDef
labelsDef
issueDef*
observationDef*
actionDef*
procedure*
;
include
: USE qualifiedName EOS;
systemDef
: SYSTEM definition;
labelsDef
: LABELS COLON '{' label* '}' EOS ;
label
: IDENTIFIER COLON literal EOS
;
issueDef
: ISSUES definition;
observationDef
: OBSERVATIONS definition;
actionDef
: ACTIONS definition;
definition
: IDENTIFIER? parameters? (COLON block)? EOS
;
reference
: IDENTIFIER? parameters? (COLON)? (atClause (COMMA atClause)*)? EOS
;
parameters
: '[' param (COMMA param)* ']'
;
param
: literal
| IDENTIFIER
;
literal
: STRINGLITERAL
| INTEGET_LITERAL
| PERCENTAGELITERAL
| FLOATLITERAL
| TRUE
| FALSE
;
block
: '{' ((marker)? (definition | reference))+ '}'
;
marker
: PLUS
| MINUS
| MULTIPLY
| SHARP
| QUESTION_MARK
;
atClause
: '@' qualifiedName parameters?
;
qualifiedName
: (DOT)? IDENTIFIER (DOT IDENTIFIER)*
;
procedure
: PROCEDURE IDENTIFIER params? COLON body
;
params
: '[' IDENTIFIER (COMMA IDENTIFIER)* ']'
;
body
: statement
| '{' statement* '}'
;
statement
: assignment
| expression // .str???
| callExpression
| ifStatement
| whileStatement
| repeatStatement
| forStatement
;
assignment
: qualifiedName ASSIGN expression (EOS)?
;
expression
: conditionalOrExpression (EOS)?;
conditionalOrExpression
: conditionalAndExpression (OR conditionalAndExpression)*
;
conditionalAndExpression
: equalityExpression (AND equalityExpression)*
;
equalityExpression
: stringExpression (equalityOp stringExpression)?
;
equalityOp
: EQUAL
| NE
;
stringExpression
: relationalExpression ('§' stringExpression)?
;
relationalExpression
: additiveExpression (relationalOp additiveExpression)*
;
relationalOp
: '<='
| '>='
| '<'
| '>'
;
additiveExpression
: multiplicativeExpression ((PLUS | MINUS) multiplicativeExpression)*
;
multiplicativeExpression
: unaryExpression ((MULTIPLY | DIVIDE) unaryExpression)*
;
unaryExpression
: (PLUS | MINUS | NOT)? basicExpression
;
basicExpression
: rangeExpression
| callExpression
| qualifiedName // .str >
| percentageExpression
| '(' expression ')'
| literal
;
percentageExpression
: PERCENTAGELITERAL 'of' additiveExpression
;
rangeExpression
: qualifiedName '(' ThreeDigits '..' ThreeDigits ')' (EOS)?
;
callExpression
: qualifiedName arguments (EOS)?
;
arguments
: '(' (expression (COMMA expression)*)? ')'
;
ifStatement // (ELSE body)?
: IF '(' expression ')' body
(ELSE ifStatement | body)?
;
whileStatement
: WHILE '(' expression ')' body
;
repeatStatement
: REPEAT body UNTIL '(' expression ')' EOS
;
forStatement
: FOR .qualifiedName ASSIGN value TO value STEP value body
;
value
: FLOATLITERAL
;
और यह मेरा फ़ाइल build.xml है:
<target name="-pre-compile" depends="antlr">
</target>
<target name="init-antlr">
<!-- Full path to Antlr jar -->
<property name="antlr-4.0-complete.jar" location="C:/Users/Mary/Documents/TesiMagistrale/lib/antlr-4.0-complete.jar"/>
<!-- Grammar path -->
<property name="antlr.grammar" location="src/troubles/lang/Troubles.g4"/>
<!--<property name="antlr.lexer" location="src/trouble/lang/TroublesL.g4"/>-->
</target>
<target name="antlr" depends="init-antlr" unless="up-to-date">
<!-- Compiling grammar -->
<java classname="org.antlr.v4.Tool" fork="true">
<arg value="${antlr.grammar}"/>
<!--<arg value="${antlr.lexer}"/>-->
<arg value="-visitor"/>
<classpath path="${antlr-4.0-complete.jar}"/>
</java>
</target>
यह उपयोगी हो सकता है अगर आप या तो अपने व्याकरण या, यह काफी लंबा है, तो, एक [sscce] (http शामिल हो सकते हैं: मैं संकुल जिसे आप यहां प्राप्त कर सकते हैं का समर्थन करने के TestRig का एक संस्करण समझौता // sscce.org) जो इस मुद्दे को प्रदर्शित करता है। इससे दूसरों को समस्या का तुरंत निदान करने में मदद मिलेगी और आप इसे स्वयं प्रक्रिया में भी खोज सकते हैं। – ig0774