[antlr-interest] Refactoring grammar
    Omry Yadan 
    omry at yadan.net
       
    Mon Feb 12 08:59:56 PST 2007
    
    
  
here is a rule from my line parser.
the line parser identifies the type of the line, and also break it into 
components.
this part identifies the type of command this line represents, and keep 
the command text as a member:
command
    {String s = "";}
    :
    (
        "if" {m_type = TYPE_IF;m_text = "if";}|
        "ifdef" {m_type = TYPE_IFDEF;m_text="ifdef";}|
        "ifndef" {m_type = TYPE_IFNDEF;m_text="ifndef";}
    )
    s = cmd_args
    {
        m_text += s;
    };
is there a generic way to do it (I got about 8 more such rules) ?
I mean, something that will not require me to type each command twice.
I tried something like:
    (
        c:"if" {m_type = TYPE_IF;}|
        c:"ifdef" {m_type = TYPE_IFDEF;}|
        c:"ifndef" {m_type = TYPE_IFNDEF;}
    )
    {m_text=c.getText();}
But antlr complained that c is already defined (although the code it 
would have generated should have compiled fine).
any other ideas?
    
    
More information about the antlr-interest
mailing list