final public SimpleNode process() throws ParseException {
  ASTprocess jjtn000=new ASTprocess(this,JJTPROCESS);
  boolean jjtc000=true;
  jjtree.openNodeScope(jjtn000);
  try {
    label_1:     while (true) {
switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
case LPAREN:
case RPAREN:
case ESCAPE_DIRECTIVE:
case SET_DIRECTIVE:
case DOUBLE_ESCAPE:
case ESCAPE:
case TEXT:
case SINGLE_LINE_COMMENT:
case FORMAL_COMMENT:
case MULTI_LINE_COMMENT:
case STRING_LITERAL:
case IF_DIRECTIVE:
case STOP_DIRECTIVE:
case NUMBER_LITERAL:
case WORD:
case IDENTIFIER:
case DOT:
case LCURLY:
case RCURLY:
        ;
      break;
default :
    jj_la1[0]=jj_gen;
  break label_1;
}
Statement();
}
jj_consume_token(0);
jjtree.closeNodeScope(jjtn000,true);
jjtc000=false;
{
if (true) return jjtn000;
}
}
 catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000=false;
}
 else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{
if (true) throw (RuntimeException)jjte000;
}
}
if (jjte000 instanceof ParseException) {
{
if (true) throw (ParseException)jjte000;
}
}
{
if (true) throw (Error)jjte000;
}
}
 finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000,true);
}
}
throw new Error("Missing return statement in function");
}

final public SimpleNode process ( ) throws ParseException { ASTprocess jjtn000 = new ASTprocess ( this , JJTPROCESS ) ; boolean jjtc000 = true ; jjtree . openNodeScope ( jjtn000 ) ; try { label_1 : while ( true ) { switch ( ( jj_ntk == - 1 ) ? jj_ntk ( ) : jj_ntk ) { case LPAREN : case RPAREN : case ESCAPE_DIRECTIVE : case SET_DIRECTIVE : case DOUBLE_ESCAPE : case ESCAPE : case TEXT : case SINGLE_LINE_COMMENT : case FORMAL_COMMENT : case MULTI_LINE_COMMENT : case STRING_LITERAL : case IF_DIRECTIVE : case STOP_DIRECTIVE : case NUMBER_LITERAL : case WORD : case IDENTIFIER : case DOT : case LCURLY : case RCURLY : ; break ; default : jj_la1 [ 0 ] = jj_gen ; break label_1 ; } Statement ( ) ; } jj_consume_token ( 0 ) ; jjtree . closeNodeScope ( jjtn000 , true ) ; jjtc000 = false ; { if ( true ) return jjtn000 ; } } catch ( Throwable jjte000 ) { if ( jjtc000 ) { jjtree . clearNodeScope ( jjtn000 ) ; jjtc000 = false ; } else { jjtree . popNode ( ) ; } if ( jjte000 instanceof RuntimeException ) { { if ( true ) throw ( RuntimeException ) jjte000 ; } } if ( jjte000 instanceof ParseException ) { { if ( true ) throw ( ParseException ) jjte000 ; } } { if ( true ) throw ( Error ) jjte000 ; } } finally { if ( jjtc000 ) { jjtree . closeNodeScope ( jjtn000 , true ) ; } } throw new Error ( "Missing return statement in function" ) ; }
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
