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.
AdditiveExpression
public final void AdditiveExpression()
throws ParseException
ConditionalAndExpression
public final void ConditionalAndExpression()
throws ParseException
ConditionalOrExpression
public final void ConditionalOrExpression()
throws ParseException
DirectiveArg
public final int DirectiveArg()
throws ParseException
Supports the arguments for the Pluggable Directives
We add whitespace in here as a token so the VMs can
easily reconstruct a macro body from the token stream
See Directive()
ElseIfStatement
public final void ElseIfStatement()
throws ParseException
EqualityExpression
public final void EqualityExpression()
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
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.
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
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
Method
public final void Method()
throws ParseException
This method has yet to be fully implemented
but will allow arbitrarily nested method
calls
MultiplicativeExpression
public final void MultiplicativeExpression()
throws ParseException
Parameter
public final void Parameter()
throws ParseException
This method has yet to be fully implemented
but will allow arbitrarily nested method
calls
PrimaryExpression
public final void PrimaryExpression()
throws ParseException
RelationalExpression
public final void RelationalExpression()
throws ParseException
SetDirective
public final void SetDirective()
throws ParseException
Currently support both types of set :
#set( expr )
#set expr
Statement
public final void Statement()
throws ParseException
These are the types of statements that
are acceptable in Velocity templates.
StopStatement
public final void StopStatement()
throws ParseException
This method corresponds to the #stop
directive which just simulates and EOF
so that parsing stops. The #stop directive
is useful for end-user debugging
purposes.
Text
public final void Text()
throws ParseException
This method is responsible for allowing
all non-grammar text to pass through
unscathed.
UnaryExpression
public final void UnaryExpression()
throws ParseException
disable_tracing
public final void disable_tracing()
enable_tracing
public final void enable_tracing()
escapedDirective
private String escapedDirective(String strImage)
Produces a processed output for an escaped control or
pluggable directive
generateParseException
public final ParseException generateParseException()
getDirective
public Directive getDirective(String directive)
This method gets a Directive from the directives Hashtable
getNextToken
public final Token getNextToken()
getToken
public final Token getToken(int index)
isDirective
public boolean isDirective(String directive)
This method finds out of the directive exists in the directives
Hashtable.
jj_2_1
private final boolean jj_2_1(int xla)
jj_2_10
private final boolean jj_2_10(int xla)
jj_2_11
private final boolean jj_2_11(int xla)
jj_2_2
private final boolean jj_2_2(int xla)
jj_2_3
private final boolean jj_2_3(int xla)
jj_2_4
private final boolean jj_2_4(int xla)
jj_2_5
private final boolean jj_2_5(int xla)
jj_2_6
private final boolean jj_2_6(int xla)
jj_2_7
private final boolean jj_2_7(int xla)
jj_2_8
private final boolean jj_2_8(int xla)
jj_2_9
private final boolean jj_2_9(int xla)
jj_3R_19
private final boolean jj_3R_19()
jj_3R_20
private final boolean jj_3R_20()
jj_3R_21
private final boolean jj_3R_21()
jj_3R_22
private final boolean jj_3R_22()
jj_3R_23
private final boolean jj_3R_23()
jj_3R_24
private final boolean jj_3R_24()
jj_3R_25
private final boolean jj_3R_25()
jj_3R_26
private final boolean jj_3R_26()
jj_3R_27
private final boolean jj_3R_27()
jj_3R_28
private final boolean jj_3R_28()
jj_3R_29
private final boolean jj_3R_29()
jj_3R_30
private final boolean jj_3R_30()
jj_3R_31
private final boolean jj_3R_31()
jj_3R_32
private final boolean jj_3R_32()
jj_3R_33
private final boolean jj_3R_33()
jj_3R_34
private final boolean jj_3R_34()
jj_3R_35
private final boolean jj_3R_35()
jj_3R_36
private final boolean jj_3R_36()
jj_3R_37
private final boolean jj_3R_37()
jj_3R_38
private final boolean jj_3R_38()
jj_3R_39
private final boolean jj_3R_39()
jj_3R_40
private final boolean jj_3R_40()
jj_3R_41
private final boolean jj_3R_41()
jj_3R_42
private final boolean jj_3R_42()
jj_3R_43
private final boolean jj_3R_43()
jj_3R_44
private final boolean jj_3R_44()
jj_3R_45
private final boolean jj_3R_45()
jj_3R_46
private final boolean jj_3R_46()
jj_3R_47
private final boolean jj_3R_47()
jj_3R_48
private final boolean jj_3R_48()
jj_3R_49
private final boolean jj_3R_49()
jj_3R_50
private final boolean jj_3R_50()
jj_3R_51
private final boolean jj_3R_51()
jj_3R_52
private final boolean jj_3R_52()
jj_3R_53
private final boolean jj_3R_53()
jj_3R_54
private final boolean jj_3R_54()
jj_3R_55
private final boolean jj_3R_55()
jj_3R_56
private final boolean jj_3R_56()
jj_3R_57
private final boolean jj_3R_57()
jj_3R_58
private final boolean jj_3R_58()
jj_3R_59
private final boolean jj_3R_59()
jj_3R_60
private final boolean jj_3R_60()
jj_3R_61
private final boolean jj_3R_61()
jj_3R_62
private final boolean jj_3R_62()
jj_3R_63
private final boolean jj_3R_63()
jj_3R_64
private final boolean jj_3R_64()
jj_3R_65
private final boolean jj_3R_65()
jj_3R_66
private final boolean jj_3R_66()
jj_3R_67
private final boolean jj_3R_67()
jj_3R_68
private final boolean jj_3R_68()
jj_3R_69
private final boolean jj_3R_69()
jj_3R_70
private final boolean jj_3R_70()
jj_3R_71
private final boolean jj_3R_71()
jj_3R_72
private final boolean jj_3R_72()
jj_3R_73
private final boolean jj_3R_73()
jj_3R_74
private final boolean jj_3R_74()
jj_3R_75
private final boolean jj_3R_75()
jj_3R_76
private final boolean jj_3R_76()
jj_3R_77
private final boolean jj_3R_77()
jj_3R_78
private final boolean jj_3R_78()
jj_3R_79
private final boolean jj_3R_79()
jj_3R_80
private final boolean jj_3R_80()
jj_3R_81
private final boolean jj_3R_81()
jj_3R_82
private final boolean jj_3R_82()
jj_3R_83
private final boolean jj_3R_83()
jj_3R_84
private final boolean jj_3R_84()
jj_3R_85
private final boolean jj_3R_85()
jj_3R_86
private final boolean jj_3R_86()
jj_3R_87
private final boolean jj_3R_87()
jj_3R_88
private final boolean jj_3R_88()
jj_3R_89
private final boolean jj_3R_89()
jj_3_1
private final boolean jj_3_1()
jj_3_10
private final boolean jj_3_10()
jj_3_11
private final boolean jj_3_11()
jj_3_2
private final boolean jj_3_2()
jj_3_3
private final boolean jj_3_3()
jj_3_4
private final boolean jj_3_4()
jj_3_5
private final boolean jj_3_5()
jj_3_6
private final boolean jj_3_6()
jj_3_7
private final boolean jj_3_7()
jj_3_8
private final boolean jj_3_8()
jj_3_9
private final boolean jj_3_9()
jj_add_error_token
private void jj_add_error_token(int kind,
int pos)
jj_ntk
private final int jj_ntk()
jj_rescan_token
private final void jj_rescan_token()
jj_save
private final void jj_save(int index,
int xla)
jj_scan_token
private final boolean jj_scan_token(int kind)
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.
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
setDirectives
public void setDirectives(Hashtable directives)
This method sets the directives Hashtable