All Downloads are FREE. Search and download functionalities are using the official Maven repository.

.mango.1.02.source-code.parser.jjt Maven / Gradle / Ivy

There is a newer version: 1.06
Show newest version
options
{
    /** 使用jdk1.6 */
    JDK_VERSION = "1.6";

    /** 生成非静态方法 */
    static = false;

    /** 标记开始token与结束token */
    TRACK_TOKENS=true;

    /** 让jjtree给每个非终结符生成一个对象 */
    MULTI = true;

    /** 开启访问者模式 */
    VISITOR = true;

    /** 忽略大小写 */
    IGNORE_CASE = true;

}

PARSER_BEGIN(Parser)
package cc.concurrent.mango.runtime.parser;

import java.io.StringReader;
import java.io.Reader;

public class Parser {
    public Parser(String s) {
        this((Reader)(new StringReader(s)));
    }
}
PARSER_END(Parser)


TOKEN:
{
        <#COLON: ":" >
    |   <#NUMBER: ["1"-"9"] (["0"-"9"])* >
    |   <#DOT: "." >
    |   <#FIELD: ["a"-"z","_"] (["a"-"z","_", "0"-"9"])* >
    |   <#PARAMETER:  (|) ( )* >
}

TOKEN:
{

        
    |    >
    |    {SwitchTo(I);}
    |    {SwitchTo(G);}
    |   
}


SKIP :
{
        " "
}


TOKEN :
{
         >
    |    {SwitchTo(DEFAULT);}
}



SKIP :
{
        " "
}


TOKEN :
{
         >
    |   
    |   
    |   
    |   
    |   
    |   
    |   
    |   
    |    {SwitchTo(DEFAULT);}
}

ASTRootNode parse()  #RootNode :
{
}
{
    (LOOKAHEAD(4) IterableParameter() | Text() | Blank() | NonIterableParameter() | DirectiveExpression())+ 
    {
        return jjtThis;
    }
}

void IterableParameter() :
{
    Token t;
}
{
    t=
    {
        jjtThis.setInterableProperty(t.image);
    }
    
    
    t=
    {
        jjtThis.setParameter(t.image);
    }
    
}

void NonIterableParameter() :
{
    Token t;
}
{
    t=
    {
        jjtThis.setParameter(t.image);
    }
}

void Text() :
{
    Token t;
}
{
    t=
    {
        jjtThis.setValue(t.image);
    }
}

void Blank() :
{
    Token t;
}
{
    t=
    {
        jjtThis.setValue(t.image);
    }
}

void DirectiveExpression() #void : // 标记为void不生成节点
{
}
{
     Expression() 
}


void Expression() :
{
}
{
    AdditiveExpression()
}

void AdditiveExpression() #void : // 标记为void不生成节点
{}
{
    MultiplicativeExpression()
    (
              MultiplicativeExpression() #AddExpression(2)
        |    MultiplicativeExpression() #SubtractExpression(2)
    )*
}

void MultiplicativeExpression() #void : // 标记为void不生成节点
{}
{
    PrimaryExpression()
    (
              PrimaryExpression() #MulExpression(2)
        |     PrimaryExpression() #DivExpression(2)
        |     PrimaryExpression() #ModExpression(2)
    )*
}

void PrimaryExpression() #void :
{}
{
        Variable()
    |   IntegerLiteral()
    |    AdditiveExpression() 
}

void Variable() :
{
    Token t;
}
{
    t=
    {
        jjtThis.setParameter(t.image);
    }
}

void IntegerLiteral() :
{
    Token t;
}
{
    t=
    {
        jjtThis.setValue(Integer.valueOf(t.image));
    }
}