Class ExpressionParser

java.lang.Object
com.googlecode.aviator.parser.ExpressionParser
All Implemented Interfaces:
Parser

public class ExpressionParser extends Object implements Parser
Syntex parser for expression
  • Field Details

    • lexer

      private final ExpressionLexer lexer
    • lookhead

      private Token<?> lookhead
    • prevTokens

      private final ArrayDeque<Token<?>> prevTokens
    • codeGenerator

      private CodeGenerator codeGenerator
    • scope

      private ScopeInfo scope
    • parsedTokens

      private int parsedTokens
    • inPattern

      private boolean inPattern
    • instance

      private final AviatorEvaluatorInstance instance
    • captureFuncArgs

      private final boolean captureFuncArgs
    • featureSet

      private final Set<Feature> featureSet
    • LEFT_PAREN

      public static final CharToken LEFT_PAREN
    • RIGHT_PAREN

      public static final CharToken RIGHT_PAREN
    • getCGTimes

      private int getCGTimes
  • Constructor Details

  • Method Details

    • getPrevToken

      public Token<?> getPrevToken()
    • getCodeGenerator

      public CodeGenerator getCodeGenerator()
      Specified by:
      getCodeGenerator in interface Parser
    • getLookhead

      public Token<?> getLookhead()
    • getSymbolTable

      public SymbolTable getSymbolTable()
      Specified by:
      getSymbolTable in interface Parser
    • setCodeGenerator

      public void setCodeGenerator(CodeGenerator codeGenerator)
      Specified by:
      setCodeGenerator in interface Parser
    • enterScope

      public ScopeInfo enterScope(boolean inNewScope)
      Specified by:
      enterScope in interface Parser
    • restoreScope

      public void restoreScope(ScopeInfo info)
      (non-Javadoc)
      Specified by:
      restoreScope in interface Parser
      See Also:
    • ensureFeatureEnabled

      private void ensureFeatureEnabled(Feature feature)
    • 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

      private void checkVarIsInit(Token<?> prevToken, ExpressionParser.StatementType stmtType)
    • 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

      private String getParamExp(int lastTokenIndex)
    • isOPVariable

      public boolean isOPVariable(Token<?> token)
    • factor

      public void factor()
    • factor0

      private boolean factor0()
    • lambda

      private void lambda(boolean fn)
    • currentTokenLexeme

      private String currentTokenLexeme()
    • lambdaArgument

      private FunctionParam lambdaArgument(int index)
    • lambdaArgument0

      private FunctionParam lambdaArgument0(int index, boolean isVariadic)
    • arrayAccess

      private boolean arrayAccess()
    • array

      private void array()
    • checkVariableName

      private void checkVariableName(Token<?> token)
    • methodInvokeOrArrayAccess

      private void methodInvokeOrArrayAccess()
    • method

      private void method(Token<?> methodName)
    • isJavaIdentifier

      public static final boolean isJavaIdentifier(String id)
      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

      public void reportSyntaxError(String message)
    • isValidLookhead

      private boolean isValidLookhead()
    • move

      public void move(boolean analyse)
    • getParsedTokens

      public int getParsedTokens()
    • back

      public void back()
    • parse

      public Expression parse(boolean reportErrorIfNotEOF)
    • parse

      public Expression 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

      private void checkFunctionName(Token<?> token, boolean warnOnExists)
    • currentToken

      private Token<?> 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

      private ExpressionParser.StatementType statement()
    • withMetaBegin

      private void withMetaBegin()
    • withMetaEnd

      private void withMetaEnd(Object key, Object val)
    • value2token

      private Token<?> value2token(Object val)
    • forStatement

      private void forStatement()
        for x in coll {
           ...body...
        }
        ...statements...
       
      ===>
        __reducer_callcc(seq, lambda(x) ->
            ...body...
        end, lambda()- >
             ...statements...
        end);
       
    • statements

      private ExpressionParser.StatementType statements()
    • ensureNoStatementAfterReturn

      private void ensureNoStatementAfterReturn(ExpressionParser.StatementType statementType)
    • 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

      private String getLoopKeyword(boolean isWhile)
    • elseStatement

      private boolean elseStatement(boolean isWhile, boolean isElsif, boolean ifBodyHasReturn)
    • withoutElse

      private boolean withoutElse()
    • elseBody

      private boolean elseBody(boolean inheritEnv)
    • anonymousMethodName

      private DelegateToken anonymousMethodName()
    • ensureDepthState

      private void ensureDepthState()
    • isConstant

      public static boolean isConstant(Token<?> token, AviatorEvaluatorInstance instance)
    • isLiteralToken

      public static boolean isLiteralToken(Token<?> token, AviatorEvaluatorInstance instance)
    • getCodeGeneratorWithTimes

      private final CodeGenerator getCodeGeneratorWithTimes()