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

ango.1.18.source-code.parser.jjt Maven / Gradle / Ivy

There is a newer version: 2.0.1
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 org.jfaster.mango.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"])* >
    |   <#WHITESPACE : (" ")* >
}


TOKEN:
{
        
    |    "("    ")"  >
    |   
    |      "}" >
    |    {SwitchTo(EXPRESSION);}
    |    {SwitchTo(EXPRESSION);}
    |   
    |   
    |   
    |   
    |   
    |   
    |   
}


SKIP :
{
        " "
}


TOKEN:
{
        
    |   
    |   
    |   
    |   " | "gt" >
    |   =" | "ge" >
    |   
    |   
    |   
    |   
    |   
    |   
    |   
    |   
    |    {SwitchTo(DEFAULT);}
}


TOKEN:
{
     (|) ( )* >
}


ASTRootNode parse()  #RootNode : {}
{
    ( Insert() | Delete() | Update() | Select() ) ( Statement() )+ #Block 
    {
        return jjtThis;
    }
}

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

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

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

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

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

void IfStatement() :
{}
{
      Expression() 
        ( Statement() )* #Block
    [ ( ElseIfStatement() )+ ]
    [ ElseStatement() ]
    
}

void ElseStatement() :
{}
{
    
        ( Statement() )* #Block
}

void ElseIfStatement() :
{}
{
      Expression() 
        ( Statement() )* #Block
}

void Expression() :
{}
{
    ConditionalOrExpression()
}

void ConditionalOrExpression() #void :
{}
{
      ConditionalAndExpression()
      (    ConditionalAndExpression() #OrNode(2) )*
}


void ConditionalAndExpression() #void :
{}
{
      RelationalExpression()
      (  RelationalExpression() #AndNode(2) )*
}

void RelationalExpression() #void :
{}
{
    UnaryExpression()
    (
                UnaryExpression()   #LTNode(2)
        |       UnaryExpression()   #GTNode(2)
        |       UnaryExpression()   #LENode(2)
        |       UnaryExpression()   #GENode(2)
        |       UnaryExpression()   #EQNode(2)
        |       UnaryExpression()   #NENode(2)
    )*
}

void UnaryExpression() #void :
{}
{
          UnaryExpression() #NotNode(1)
    |   PrimaryExpression()
}

void PrimaryExpression() #void :
{}
{
        ExpressionParameter()
    |   IntegerLiteral()
    |   True()
    |   False()
    |   Null()
}

void ExpressionParameter() :
{
    Token t;
}
{
    t=
    {
        jjtThis.init(t.image);
    }
}

void IntegerLiteral() :
{
    Token t;
}
{
    t=
    {
        jjtThis.init(t.image);
    }
}

void True() :
{}
{
    
}

void False() :
{}
{
    
}

void Null() :
{}
{
    
}













© 2015 - 2025 Weber Informatics LLC | Privacy Policy