Class BaseSimpleParser

java.lang.Object
org.apache.camel.language.simple.BaseSimpleParser
Direct Known Subclasses:
SimpleExpressionParser, SimplePredicateParser

public abstract class BaseSimpleParser extends Object
Base class for Simple language parser.

This parser is based on the principles of a recursive descent parser.

  • Field Details

    • CODE_START

      public static final String CODE_START
      Marker used for start of generated code for csimple
      See Also:
    • CODE_END

      public static final String CODE_END
      Marker used for end of generated code for csimple
      See Also:
    • camelContext

      protected final org.apache.camel.CamelContext camelContext
    • expression

      protected final String expression
    • tokens

      protected final List<SimpleToken> tokens
    • nodes

      protected final List<SimpleNode> nodes
    • token

      protected SimpleToken token
    • previousIndex

      protected int previousIndex
    • index

      protected int index
    • allowEscape

      protected final boolean allowEscape
  • Constructor Details

    • BaseSimpleParser

      protected BaseSimpleParser(org.apache.camel.CamelContext camelContext, String expression, boolean allowEscape)
  • Method Details

    • nextToken

      protected void nextToken()
      Advances the parser position to the next known SimpleToken in the input.
    • nextToken

      protected void nextToken(TokenType... filter)
      Advances the parser position to the next known SimpleToken in the input.
      Parameters:
      filter - filter for accepted token types
    • clear

      protected void clear()
      Clears the parser state, which means it can be used for parsing a new input.
    • prepareBlocks

      protected void prepareBlocks()
      Prepares blocks, such as functions, single or double-quoted texts.

      This process prepares the Blocks in the AST. This is done by linking child nodes which are within the start and end of the blocks, as child to the given block. This is done to have the AST graph updated and prepared properly.

      So when the AST node is later used to create the Predicates or Expressions to be used by Camel then the AST graph has a linked and prepared graph of nodes which represent the input expression.

    • prepareUnaryExpressions

      protected void prepareUnaryExpressions()
      Prepares unary expressions.

      This process prepares the unary expressions in the AST. This is done by linking the unary operator with the left hand side node, to have the AST graph updated and prepared properly.

      So when the AST node is later used to create the Predicates or Expressions to be used by Camel then the AST graph has a linked and prepared graph of nodes which represent the input expression.

    • accept

      protected boolean accept(TokenType accept)
      Accept the given token.

      This is to be used by the grammar to accept tokens and then continue parsing using the grammar, such as a function grammar.

      Parameters:
      accept - the token
      Returns:
      true if accepted, false otherwise.
    • expect

      protected void expect(TokenType expect) throws SimpleParserException
      Expect a given token
      Parameters:
      expect - the token to expect
      Throws:
      SimpleParserException - is thrown if the token is not as expected
    • expectAndAcceptMore

      protected void expectAndAcceptMore(TokenType expect)
      Expect and accept a given number of tokens in sequence.

      This is used to accept whitespace or string literals.

      Parameters:
      expect - the token to accept