//throws RecognitionException, TokenStreamException public void action( StringTemplate self ) { IToken a = null; IToken i = null; try { // for error handling switch ( LA(1) ) { case ACTION: { a = LT(1); match(ACTION); String indent = ((ChunkToken)a).getIndentation(); ASTExpr c = self.parseAction(a.getText()); c.setIndentation(indent); self.addChunk(c); break; } case IF: { i = LT(1); match(IF); ConditionalExpr c = (ConditionalExpr)self.parseAction(i.getText()); // create and precompile the subtemplate StringTemplate subtemplate = new StringTemplate(self.getGroup(), null); subtemplate.setEnclosingInstance(self); subtemplate.setName(i.getText()+" subtemplate"); self.addChunk(c); template(subtemplate); if ( c!=null ) c.setSubtemplate(subtemplate); { switch ( LA(1) ) { case ELSE: { match(ELSE); // create and precompile the subtemplate StringTemplate elseSubtemplate = new StringTemplate(self.getGroup(), null); elseSubtemplate.setEnclosingInstance(self); elseSubtemplate.setName("else subtemplate"); template(elseSubtemplate); if ( c!=null ) c.setElseSubtemplate(elseSubtemplate); break; } case ENDIF: { break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } match(ENDIF); break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } catch (RecognitionException ex) { reportError(ex); recover(ex,tokenSet_1_); } }
//throws RecognitionException, TokenStreamException public void arg( StringTemplate st ) { IToken name = null; IToken s = null; IToken bs = null; StringTemplate defaultValue = null; try { // for error handling name = LT(1); match(ID); { if ((LA(1)==ASSIGN) && (LA(2)==STRING)) { match(ASSIGN); s = LT(1); match(STRING); defaultValue=new StringTemplate("$_val_$"); defaultValue.setAttribute("_val_", s.getText()); defaultValue.defineFormalArgument("_val_"); defaultValue.setName("<"+st.getName()+"'s arg "+name.getText()+" default value subtemplate>"); } else if ((LA(1)==ASSIGN) && (LA(2)==ANONYMOUS_TEMPLATE)) { match(ASSIGN); bs = LT(1); match(ANONYMOUS_TEMPLATE); defaultValue=new StringTemplate(st.getGroup(), bs.getText()); defaultValue.setName("<"+st.getName()+"'s arg "+name.getText()+" default value subtemplate>"); } else if ((LA(1)==RPAREN||LA(1)==COMMA)) { } else { throw new NoViableAltException(LT(1), getFilename()); } } st.defineFormalArgument(name.getText(), defaultValue); } catch (RecognitionException ex) { reportError(ex); recover(ex,tokenSet_3_); } }