//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.Name = "<"+st.Name+"'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.Group, bs.getText()); defaultValue.Name = "<"+st.Name+"'s arg "+name.getText()+" default value subtemplate>"; } else if ((LA(1)==COMMA||LA(1)==RPAREN)) { } else { throw new NoViableAltException(LT(1), getFilename()); } } st.DefineFormalArgument(name.getText(), defaultValue); } catch (RecognitionException ex) { reportError(ex); recover(ex,tokenSet_3_); } }