[antlr-interest] Basic grammar problem
DevUnion Team
devunion at gmail.com
Sat Nov 3 12:09:54 PDT 2007
Dear, antlr-interest.
I've tried to write basic parser. which need to return value for input
string. String example: "parameter(1)". Parser need to return value
from predefined map: parameters.get(1). I can't understand where
problem is.
My grammar:
grammar Property;
@header {
import java.util.Map;
import java.util.HashMap;
import java.io.ByteArrayInputStream;
}
@members {
/** Map variable name to Integer object holding value */
Map<String, String> parameters = new HashMap<String, String>();
String leftArg;
{
parameters.put("1", "2");
}
public static void main(String[] args) throws Exception {
ANTLRInputStream input = new ANTLRInputStream(new ByteArrayInputStream(args[0].getBytes()));
PropertyLexer lexer = new PropertyLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
PropertyParser parser = new PropertyParser(tokens);
System.out.println(parser.parameter());
}
}
/*------------------------------------------------------------------
* PARSER RULES
*------------------------------------------------------------------*/
parameter returns [String value]
: 'parameter(' STRING ')' {$value = parameters.get($STRING.text);};
/*------------------------------------------------------------------
* LEXER RULES
*------------------------------------------------------------------*/
STRING
: ('a'..'z' | 'A'..'Z' | '0'..'9')+;
--
Best regards,
Vikar Liaskovich, DevUnion Team mailto:devunion at gmail.com
More information about the antlr-interest
mailing list