[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