Class ExpressionParser

  • All Implemented Interfaces:
    Parser

    public class ExpressionParser
    extends java.lang.Object
    implements Parser
    Syntex parser for expression
    • Field Detail

      • lookhead

        private Token<?> lookhead
      • prevTokens

        private final java.util.ArrayDeque<Token<?>> prevTokens
      • parsedTokens

        private int parsedTokens
      • inPattern

        private boolean inPattern
      • captureFuncArgs

        private final boolean captureFuncArgs
      • featureSet

        private final java.util.Set<Feature> featureSet
      • LEFT_PAREN

        public static final CharToken LEFT_PAREN
      • RIGHT_PAREN

        public static final CharToken RIGHT_PAREN
      • getCGTimes

        private int getCGTimes
    • Method Detail

      • getPrevToken

        public Token<?> getPrevToken()
      • getLookhead

        public Token<?> getLookhead()
      • restoreScope

        public void restoreScope​(ScopeInfo info)
        (non-Javadoc)
        Specified by:
        restoreScope in interface Parser
        See Also:
        com.googlecode.aviator.parser.Parser#restoreScope(com.googlecode.aviator.parser.ExpressionParser.DepthInfo)
      • 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()
      • 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 java.lang.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 java.lang.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​(java.lang.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​(java.lang.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)
      • 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()
      • withMetaBegin

        private void withMetaBegin()
      • withMetaEnd

        private void withMetaEnd​(java.lang.Object key,
                                 java.lang.Object val)
      • value2token

        private Token<?> value2token​(java.lang.Object val)
      • forStatement

        private void forStatement()
          for x in coll {
             ...body...
          }
          ...statements...
         
        ===>
          __reducer_callcc(seq, lambda(x) ->
              ...body...
          end, lambda()- >
               ...statements...
          end);
         
      • 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 java.lang.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()
      • getCodeGeneratorWithTimes

        private final CodeGenerator getCodeGeneratorWithTimes()