.mango.1.05.source-code.parser.jjt Maven / Gradle / Ivy
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));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy