Package com.googlecode.aviator.parser
Class ExpressionParser
java.lang.Object
com.googlecode.aviator.parser.ExpressionParser
- All Implemented Interfaces:
Parser
Syntex parser for expression
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final boolean
private CodeGenerator
private int
private boolean
private final AviatorEvaluatorInstance
static final CharToken
private final ExpressionLexer
private Token
<?> private int
private final ArrayDeque
<Token<?>> static final CharToken
private ScopeInfo
-
Constructor Summary
ConstructorsConstructorDescriptionExpressionParser
(AviatorEvaluatorInstance instance, ExpressionLexer lexer, CodeGenerator codeGenerator) -
Method Summary
Modifier and TypeMethodDescriptionvoid
and()
private DelegateToken
private void
array()
private boolean
void
back()
void
bitAnd()
void
bitOr()
private void
Call __reducer_break()private void
checkFunctionName
(Token<?> token, boolean warnOnExists) private void
checkVariableName
(Token<?> token) private void
checkVarIsInit
(Token<?> prevToken, ExpressionParser.StatementType stmtType) private void
private void
Call __reducer_cont(nil)private Token
<?> private String
private boolean
elseBody
(boolean inheritEnv) private boolean
elseStatement
(boolean isWhile, boolean isElsif, boolean ifBodyHasReturn) private void
private void
ensureFeatureEnabled
(Feature feature) private void
ensureNoStatementAfterReturn
(ExpressionParser.StatementType statementType) enterScope
(boolean inNewScope) void
equality()
private boolean
expectChar
(char ch) void
exponent()
void
expr()
void
factor()
private boolean
factor0()
private void
private void
for x in coll { ...body...private final CodeGenerator
Token
<?> private int
private int
private String
getLoopKeyword
(boolean isWhile) private String
getParamExp
(int lastTokenIndex) int
Token
<?> private boolean
ifStatement
(boolean isWhile, boolean isElsif) if(test) { ...if-body...static boolean
isConstant
(Token<?> token, AviatorEvaluatorInstance instance) static final boolean
Test whether a given string is a valid Java identifier.static boolean
isLiteralToken
(Token<?> token, AviatorEvaluatorInstance instance) boolean
isOPVariable
(Token<?> token) private boolean
void
join()
private void
lambda
(boolean fn) private FunctionParam
lambdaArgument
(int index) private FunctionParam
lambdaArgument0
(int index, boolean isVariadic) private void
private void
private void
void
move
(boolean analyse) private void
parse()
parse
(boolean reportErrorIfNotEOF) private void
pattern()
void
rel()
void
reportSyntaxError
(String message) void
restoreScope
(ScopeInfo info) (non-Javadoc)void
Call __reducer_return(result)private boolean
void
setCodeGenerator
(CodeGenerator codeGenerator) void
shift()
private ExpressionParser.StatementType
private ExpressionParser.StatementType
void
term()
boolean
ternary()
private void
private void
void
unary()
private void
private Token
<?> value2token
(Object val) private void
while(test) { ...body...private void
wildcard()
private void
private void
withMetaEnd
(Object key, Object val) private boolean
void
xor()
-
Field Details
-
lexer
-
lookhead
-
prevTokens
-
codeGenerator
-
scope
-
parsedTokens
private int parsedTokens -
inPattern
private boolean inPattern -
instance
-
captureFuncArgs
private final boolean captureFuncArgs -
featureSet
-
LEFT_PAREN
-
RIGHT_PAREN
-
getCGTimes
private int getCGTimes
-
-
Constructor Details
-
ExpressionParser
public ExpressionParser(AviatorEvaluatorInstance instance, ExpressionLexer lexer, CodeGenerator codeGenerator)
-
-
Method Details
-
getPrevToken
-
getCodeGenerator
- Specified by:
getCodeGenerator
in interfaceParser
-
getLookhead
-
getSymbolTable
- Specified by:
getSymbolTable
in interfaceParser
-
setCodeGenerator
- Specified by:
setCodeGenerator
in interfaceParser
-
enterScope
- Specified by:
enterScope
in interfaceParser
-
restoreScope
(non-Javadoc)- Specified by:
restoreScope
in interfaceParser
- See Also:
-
ensureFeatureEnabled
-
returnStatement
public void returnStatement()Call __reducer_return(result) -
ternary
public boolean ternary() -
join
public void join() -
expectChar
private boolean expectChar(char ch) -
bitOr
public void bitOr() -
xor
public void xor() -
bitAnd
public void bitAnd() -
and
public void and() -
equality
public void equality() -
checkVarIsInit
-
rel
public void rel() -
shift
public void shift() -
expr
public void expr() -
exponent
public void exponent() -
term
public void term() -
unary
public void unary() -
getLookheadStartIndex
private int getLookheadStartIndex() -
getLookheadLexemeLength
private int getLookheadLexemeLength() -
getParamExp
-
isOPVariable
-
factor
public void factor() -
factor0
private boolean factor0() -
lambda
private void lambda(boolean fn) -
currentTokenLexeme
-
lambdaArgument
-
lambdaArgument0
-
arrayAccess
private boolean arrayAccess() -
array
private void array() -
checkVariableName
-
methodInvokeOrArrayAccess
private void methodInvokeOrArrayAccess() -
method
-
isJavaIdentifier
Test whether a given string is a valid Java identifier.- Parameters:
id
- string which should be checked- Returns:
true
if a valid identifier
-
pattern
private void pattern() -
reportSyntaxError
-
isValidLookhead
private boolean isValidLookhead() -
move
public void move(boolean analyse) -
getParsedTokens
public int getParsedTokens() -
back
public void back() -
parse
-
parse
-
breakStatement
private void breakStatement()Call __reducer_break() -
continueStatement
private void continueStatement()Call __reducer_cont(nil) -
whileStatement
private void whileStatement()while(test) { ...body... } ...statements...
===>__reducer_callcc(__reducer_loop, lambda() -> if(test) { ...body... }else { break; } end, lambda()- > ...statements... end);
-
letStatement
private void letStatement() -
fnStatement
private void fnStatement() -
checkFunctionName
-
currentToken
-
scopeStatement
private boolean scopeStatement() -
tryStatement
private void tryStatement() -
throwStatement
private void throwStatement() -
newStatement
private void newStatement() -
className
private void className() -
useStatement
private void useStatement() -
wildcard
private void wildcard() -
statement
-
withMetaBegin
private void withMetaBegin() -
withMetaEnd
-
value2token
-
forStatement
private void forStatement()for x in coll { ...body... } ...statements...
===>__reducer_callcc(seq, lambda(x) -> ...body... end, lambda()- > ...statements... end);
-
statements
-
ensureNoStatementAfterReturn
-
ifStatement
private boolean ifStatement(boolean isWhile, boolean isElsif) if(test) { ...if-body... }else { ...else-body... } ...statements...
===>__if_callcc(test ? (lambda() -> ...if-body... end)() : (lambda() -> ...else-body... end)(), lambda()- > ...statements... end);
-
getLoopKeyword
-
elseStatement
private boolean elseStatement(boolean isWhile, boolean isElsif, boolean ifBodyHasReturn) -
withoutElse
private boolean withoutElse() -
elseBody
private boolean elseBody(boolean inheritEnv) -
anonymousMethodName
-
ensureDepthState
private void ensureDepthState() -
isConstant
-
isLiteralToken
-
getCodeGeneratorWithTimes
-