org.apache.velocity.runtime.parser
Class Parser

java.lang.Object
  extended by org.apache.velocity.runtime.parser.Parser
All Implemented Interfaces:
ParserConstants, ParserTreeConstants

public class Parser
extends Object
implements ParserTreeConstants, ParserConstants

This class is responsible for parsing a Velocity template. This class was generated by JavaCC using the JJTree extension to produce an Abstract Syntax Tree (AST) of the template. Please look at the Parser.jjt file which is what controls the generation of this class.

Version:
$Id: Parser.jjt 1330815 2012-04-26 12:42:39Z cbrisson $
Author:
Jason van Zyl, Geir Magnusson Jr., Henning P. Schmiedehausen

Field Summary
 String currentTemplateName
          Name of current template we are parsing.
 Token jj_nt
          Next token.
protected  JJTParserState jjtree
           
 boolean strictEscape
          Set to true if the property RuntimeConstants.RUNTIME_REFERENCES_STRICT_ESCAPE is set to true
 Token token
          Current token.
 ParserTokenManager token_source
          Generated Token Manager.
 
Fields inherited from interface org.apache.velocity.runtime.parser.ParserTreeConstants
JJTADDNODE, JJTANDNODE, JJTASSIGNMENT, JJTBLOCK, JJTCOMMENT, JJTDIRECTIVE, JJTDIRECTIVEASSIGN, JJTDIVNODE, JJTELSEIFSTATEMENT, JJTELSESTATEMENT, JJTEQNODE, JJTESCAPE, JJTESCAPEDDIRECTIVE, JJTEXPRESSION, JJTFALSE, JJTFLOATINGPOINTLITERAL, JJTGENODE, JJTGTNODE, JJTIDENTIFIER, JJTIFSTATEMENT, JJTINDEX, JJTINTEGERLITERAL, JJTINTEGERRANGE, JJTLENODE, JJTLTNODE, JJTMAP, JJTMETHOD, JJTMODNODE, JJTMULNODE, JJTNENODE, jjtNodeName, JJTNOTNODE, JJTOBJECTARRAY, JJTORNODE, JJTPROCESS, JJTREFERENCE, JJTSETDIRECTIVE, JJTSTRINGLITERAL, JJTSUBTRACTNODE, JJTTEXT, JJTTEXTBLOCK, JJTTRUE, JJTVOID, JJTWORD
 
Fields inherited from interface org.apache.velocity.runtime.parser.ParserConstants
ALPHA_CHAR, ALPHANUM_CHAR, BRACKETED_WORD, COLON, COMMA, DEFAULT, DIGIT, DIRECTIVE, DIRECTIVE_CHAR, DIRECTIVE_TERMINATOR, DIVIDE, DOLLAR, DOLLARBANG, DOT, DOUBLE_ESCAPE, DOUBLEDOT, ELSE_DIRECTIVE, ELSEIF_DIRECTIVE, EMPTY_INDEX, END, EOF, EQUALS, ESCAPE, ESCAPE_DIRECTIVE, EXPONENT, FALSE, FLOATING_POINT_LITERAL, FORMAL_COMMENT, HASH, IDENTIFIER, IDENTIFIER_CHAR, IF_DIRECTIVE, IN_FORMAL_COMMENT, IN_MULTI_LINE_COMMENT, IN_SINGLE_LINE_COMMENT, IN_TEXTBLOCK, INDEX_LBRACKET, INDEX_RBRACKET, INTEGER_LITERAL, LBRACKET, LCURLY, LEFT_CURLEY, LETTER, LOGICAL_AND, LOGICAL_EQUALS, LOGICAL_GE, LOGICAL_GT, LOGICAL_LE, LOGICAL_LT, LOGICAL_NOT, LOGICAL_NOT_EQUALS, LOGICAL_OR, LPAREN, MINUS, MODULUS, MULTI_LINE_COMMENT, MULTIPLY, NEWLINE, PLUS, PRE_DIRECTIVE, RBRACKET, RCURLY, REFERENCE, REFERENCE_TERMINATOR, REFINDEX, REFMOD, REFMOD2, REFMOD2_RPAREN, REFMODIFIER, RIGHT_CURLEY, RPAREN, SET_DIRECTIVE, SINGLE_LINE_COMMENT, SINGLE_LINE_COMMENT_START, STRING_LITERAL, TEXT, TEXTBLOCK, tokenImage, TRUE, WHITESPACE, WORD
 
Constructor Summary
Parser(CharStream stream)
          Constructor with user supplied CharStream.
Parser(ParserTokenManager tm)
          Constructor with generated Token Manager.
Parser(RuntimeServices rs)
          This constructor was added to allow the re-use of parsers.
 
Method Summary
 void AdditiveExpression()
           
 void Assignment()
           
 void Comment()
           
 void ConditionalAndExpression()
           
 void ConditionalOrExpression()
           
 SimpleNode Directive()
          Supports the Pluggable Directives #foo( arg+ )
 int DirectiveArg()
          Supports the arguments for the Pluggable Directives
 void DirectiveAssign()
           
 void disable_tracing()
          Disable tracing.
 void ElseIfStatement()
           
 void ElseStatement()
           
 void enable_tracing()
          Enable tracing.
 void EqualityExpression()
           
 void Escape()
          Used to catch and process escape sequences in grammatical constructs as escapes outside of VTL are just characters.
 void EscapedDirective()
          used to separate the notion of a valid directive that has been escaped, versus something that looks like a directive and is just schmoo.
 void Expression()
           
 void False()
           
 void FloatingPointLiteral()
           
 ParseException generateParseException()
          Generate ParseException.
 Directive getDirective(String directive)
          This method gets a Directive from the directives Hashtable
 Token getNextToken()
          Get the next Token.
 Token getToken(int index)
          Get the specific Token.
 void Identifier()
          This method corresponds to variable references in Velocity templates.
 void IfStatement()
           
 void Index()
           
 void IndexParameter()
          A Simplified parameter more suitable for an index position: $foo[$index]
 void IntegerLiteral()
           
 void IntegerRange()
          supports the [n..m] vector generator for use in the #foreach() to generate measured ranges w/o needing explicit support from the app/servlet
 boolean isDirective(String directive)
          This method finds out of the directive exists in the directives Map.
 void Map()
          for creating a map in a #set #set($foo = {$foo : $bar, $blargh : $thingy})
 void Method()
          This method has yet to be fully implemented but will allow arbitrarily nested method calls
 void MultiplicativeExpression()
           
 void ObjectArray()
           
 void Parameter()
          This method has yet to be fully implemented but will allow arbitrarily nested method calls
 SimpleNode parse(Reader reader, String templateName)
          This was also added to allow parsers to be re-usable.
 void PrimaryExpression()
           
 SimpleNode process()
          This method is what starts the whole parsing process.
 void Reference()
           
 void ReInit(CharStream stream)
          Reinitialise.
 void ReInit(ParserTokenManager tm)
          Reinitialise.
 void RelationalExpression()
           
 void SetDirective()
          Currently support both types of set : #set( expr ) #set expr
 void Statement()
          These are the types of statements that are acceptable in Velocity templates.
 void StringLiteral()
           
 void Text()
          This method is responsible for allowing all non-grammar text to pass through unscathed.
 void Textblock()
           
 void True()
           
 void UnaryExpression()
           
 void Word()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

jjtree

protected JJTParserState jjtree

currentTemplateName

public String currentTemplateName
Name of current template we are parsing. Passed to us in parse()


strictEscape

public boolean strictEscape
Set to true if the property RuntimeConstants.RUNTIME_REFERENCES_STRICT_ESCAPE is set to true


token_source

public ParserTokenManager token_source
Generated Token Manager.


token

public Token token
Current token.


jj_nt

public Token jj_nt
Next token.

Constructor Detail

Parser

public Parser(RuntimeServices rs)
This constructor was added to allow the re-use of parsers. The normal constructor takes a single argument which an InputStream. This simply creates a re-usable parser object, we satisfy the requirement of an InputStream by using a newline character as an input stream.


Parser

public Parser(CharStream stream)
Constructor with user supplied CharStream.


Parser

public Parser(ParserTokenManager tm)
Constructor with generated Token Manager.

Method Detail

parse

public SimpleNode parse(Reader reader,
                        String templateName)
                 throws ParseException
This was also added to allow parsers to be re-usable. Normal JavaCC use entails passing an input stream to the constructor and the parsing process is carried out once. We want to be able to re-use parsers: we do this by adding this method and re-initializing the lexer with the new stream that we want parsed.

Throws:
ParseException

getDirective

public Directive getDirective(String directive)
This method gets a Directive from the directives Hashtable


isDirective

public boolean isDirective(String directive)
This method finds out of the directive exists in the directives Map.


process

public final SimpleNode process()
                         throws ParseException
This method is what starts the whole parsing process. After the parsing is complete and the template has been turned into an AST, this method returns the root of AST which can subsequently be traversed by a visitor which implements the ParserVisitor interface which is generated automatically by JavaCC

Throws:
ParseException

Statement

public final void Statement()
                     throws ParseException
These are the types of statements that are acceptable in Velocity templates.

Throws:
ParseException

EscapedDirective

public final void EscapedDirective()
                            throws ParseException
used to separate the notion of a valid directive that has been escaped, versus something that looks like a directive and is just schmoo. This is important to do as a separate production that creates a node, because we want this, in either case, to stop the further parsing of the Directive() tree.

Throws:
ParseException

Escape

public final void Escape()
                  throws ParseException
Used to catch and process escape sequences in grammatical constructs as escapes outside of VTL are just characters. Right now we have both this and the EscapeDirective() construction because in the EscapeDirective() case, we want to suck in the # and here we don't. We just want the escapes to render correctly

Throws:
ParseException

Comment

public final void Comment()
                   throws ParseException
Throws:
ParseException

Textblock

public final void Textblock()
                     throws ParseException
Throws:
ParseException

FloatingPointLiteral

public final void FloatingPointLiteral()
                                throws ParseException
Throws:
ParseException

IntegerLiteral

public final void IntegerLiteral()
                          throws ParseException
Throws:
ParseException

StringLiteral

public final void StringLiteral()
                         throws ParseException
Throws:
ParseException

Identifier

public final void Identifier()
                      throws ParseException
This method corresponds to variable references in Velocity templates. The following are examples of variable references that may be found in a template: $foo $bar

Throws:
ParseException

Word

public final void Word()
                throws ParseException
Throws:
ParseException

DirectiveArg

public final int DirectiveArg()
                       throws ParseException
Supports the arguments for the Pluggable Directives

Throws:
ParseException

DirectiveAssign

public final void DirectiveAssign()
                           throws ParseException
Throws:
ParseException

Directive

public final SimpleNode Directive()
                           throws ParseException
Supports the Pluggable Directives #foo( arg+ )

Throws:
ParseException

Map

public final void Map()
               throws ParseException
for creating a map in a #set #set($foo = {$foo : $bar, $blargh : $thingy})

Throws:
ParseException

ObjectArray

public final void ObjectArray()
                       throws ParseException
Throws:
ParseException

IntegerRange

public final void IntegerRange()
                        throws ParseException
supports the [n..m] vector generator for use in the #foreach() to generate measured ranges w/o needing explicit support from the app/servlet

Throws:
ParseException

IndexParameter

public final void IndexParameter()
                          throws ParseException
A Simplified parameter more suitable for an index position: $foo[$index]

Throws:
ParseException

Parameter

public final void Parameter()
                     throws ParseException
This method has yet to be fully implemented but will allow arbitrarily nested method calls

Throws:
ParseException

Method

public final void Method()
                  throws ParseException
This method has yet to be fully implemented but will allow arbitrarily nested method calls

Throws:
ParseException

Index

public final void Index()
                 throws ParseException
Throws:
ParseException

Reference

public final void Reference()
                     throws ParseException
Throws:
ParseException

True

public final void True()
                throws ParseException
Throws:
ParseException

False

public final void False()
                 throws ParseException
Throws:
ParseException

Text

public final void Text()
                throws ParseException
This method is responsible for allowing all non-grammar text to pass through unscathed.

Throws:
ParseException

IfStatement

public final void IfStatement()
                       throws ParseException
Throws:
ParseException

ElseStatement

public final void ElseStatement()
                         throws ParseException
Throws:
ParseException

ElseIfStatement

public final void ElseIfStatement()
                           throws ParseException
Throws:
ParseException

SetDirective

public final void SetDirective()
                        throws ParseException
Currently support both types of set : #set( expr ) #set expr

Throws:
ParseException

Expression

public final void Expression()
                      throws ParseException
Throws:
ParseException

Assignment

public final void Assignment()
                      throws ParseException
Throws:
ParseException

ConditionalOrExpression

public final void ConditionalOrExpression()
                                   throws ParseException
Throws:
ParseException

ConditionalAndExpression

public final void ConditionalAndExpression()
                                    throws ParseException
Throws:
ParseException

EqualityExpression

public final void EqualityExpression()
                              throws ParseException
Throws:
ParseException

RelationalExpression

public final void RelationalExpression()
                                throws ParseException
Throws:
ParseException

AdditiveExpression

public final void AdditiveExpression()
                              throws ParseException
Throws:
ParseException

MultiplicativeExpression

public final void MultiplicativeExpression()
                                    throws ParseException
Throws:
ParseException

UnaryExpression

public final void UnaryExpression()
                           throws ParseException
Throws:
ParseException

PrimaryExpression

public final void PrimaryExpression()
                             throws ParseException
Throws:
ParseException

ReInit

public void ReInit(CharStream stream)
Reinitialise.


ReInit

public void ReInit(ParserTokenManager tm)
Reinitialise.


getNextToken

public final Token getNextToken()
Get the next Token.


getToken

public final Token getToken(int index)
Get the specific Token.


generateParseException

public ParseException generateParseException()
Generate ParseException.


enable_tracing

public final void enable_tracing()
Enable tracing.


disable_tracing

public final void disable_tracing()
Disable tracing.



Copyright © 2000-2012 The Apache Software Foundation. All Rights Reserved.