[antlr-interest] [begginer question] could somebody help me to see this simple grammar?
Bart Kiers
bkiers at gmail.com
Wed Feb 16 00:40:01 PST 2011
On Wed, Feb 16, 2011 at 9:18 AM, devdoer bird <devdoer2 at gmail.com> wrote:
> ...
> As you see, the last ')' is missed.
> So what's wrong with my grammar?
>
Nothing.
Given your grammar (and adding a `parse` rule to it):
grammar T;
parse
: logicExp EOF {System.out.println("parsed :: " + $logicExp.text);}
;
logicExp
: FIELDNAME ( '>' | '<' ) (CONST_INT | CONST_STRING)
| '(' logicExp')'
;
fragment DIGIT : '0'..'9';
fragment LOWER : 'a'..'z';
fragment UPPER : 'A'..'Z';
FIELDNAME : LOWER (LOWER|DIGIT)* ;
CONST_INT : DIGIT+;
CONST_STRING : '"' (LOWER|UPPER|DIGIT)* '"';
and creating the test class:
import org.antlr.runtime.*;
public class Main {
public static void main(String[] args) throws Exception {
ANTLRStringStream in = new ANTLRStringStream("(a>3)");
TLexer lexer = new TLexer(in);
CommonTokenStream tokens = new CommonTokenStream(lexer);
TParser parser = new TParser(tokens);
parser.parse();
}
}
I generated a lexer & parser, compiled all .java files and ran the main
class:
java -cp antlr-3.2.jar org.antlr.Tool T.g
javac -cp antlr-3.2.jar *.java
java -cp .:antlr-3.2.jar Main
which produced the output:
parsed :: (a>3)
So, if ANTLRWorks produces something different, there's something wrong with
it.
Regards,
Bart.
More information about the antlr-interest
mailing list