Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   // $ANTLR 2.7.7 (20060906): "template.g" -> "DefaultTemplateLexer.java"$
   
   /*
    [The "BSD licence"]
    Copyright (c) 2003-2004 Terence Parr
    All rights reserved.
   
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions
   are met:
   1. Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
   2. Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
   3. The name of the author may not be used to endorse or promote products
      derived from this software without specific prior written permission.
  
   THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
      package org.antlr.stringtemplate.language;
      import org.antlr.stringtemplate.*;
      import java.io.*;
  
  import java.io.Reader;
  import antlr.CharScanner;
  import antlr.InputBuffer;
  import antlr.ByteBuffer;
  import antlr.CharBuffer;
  import antlr.Token;
  import antlr.CommonToken;
  import antlr.TokenStream;
Break up an input text stream into chunks of either plain text or template actions in "$...$". Treat IF and ENDIF tokens specially.
  
   {
  
  protected String currentIndent = null;
  protected StringTemplate self;
  
  public DefaultTemplateLexer(StringTemplate selfReader r) {
  	this(r);
  	this. = self;
  }
  
  public void reportError(RecognitionException e) {
  	.error("$...$ chunk lexer error"e);
  }
  
  protected boolean upcomingELSE(int ithrows CharStreamException {
   	return LA(i)=='$'&&LA(i+1)=='e'&&LA(i+2)=='l'&&LA(i+3)=='s'&&LA(i+4)=='e'&&
   	       LA(i+5)=='$';
  }
  
  protected boolean upcomingENDIF(int ithrows CharStreamException {
  	return LA(i)=='$'&&LA(i+1)=='e'&&LA(i+2)=='n'&&LA(i+3)=='d'&&LA(i+4)=='i'&&
  	       LA(i+5)=='f'&&LA(i+6)=='$';
  }
  
  protected boolean upcomingAtEND(int ithrows CharStreamException {
  	return LA(i)=='$'&&LA(i+1)=='@'&&LA(i+2)=='e'&&LA(i+3)=='n'&&LA(i+4)=='d'&&LA(i+5)=='$';
  }
  
  protected boolean upcomingNewline(int ithrows CharStreamException {
  	return (LA(i)=='\r'&&LA(i+1)=='\n')||LA(i)=='\n';
  }
  	this(new ByteBuffer(in));
  }
  public DefaultTemplateLexer(Reader in) {
  	this(new CharBuffer(in));
  }
 	this(new LexerSharedInputState(ib));
 }
 	super(state);
 	 = new Hashtable();
 }
 
 public Token nextToken() throws TokenStreamException {
 	Token theRetToken=null;
 tryAgain:
 	for (;;) {
 		Token _token = null;
 		int _ttype = .;
 		try {   // for char stream error handling
 			try {   // for lexical error handling
 				switch ( LA(1)) {
 				case '\n':  case '\r':
 				{
 					mNEWLINE(true);
 					theRetToken=;
 					break;
 				}
 				case '$':
 				{
 					mACTION(true);
 					theRetToken=;
 					break;
 				}
 				default:
 					if (((.member(LA(1))))&&(LA(1)!='\r'&&LA(1)!='\n')) {
 						mLITERAL(true);
 						theRetToken=;
 					}
 				else {
 				else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
 				}
 				}
 				if ( ==null ) continue tryAgain; // found SKIP token
 				_ttype = .getType();
 				_ttype = testLiteralsTable(_ttype);
 				return ;
 			}
 			catch (RecognitionException e) {
 			}
 		}
 		catch (CharStreamException cse) {
 			if ( cse instanceof CharStreamIOException ) {
 			}
 			else {
 				throw new TokenStreamException(cse.getMessage());
 			}
 		}
 	}
 }
 
 	public final void mLITERAL(boolean _createTokenthrows RecognitionExceptionCharStreamExceptionTokenStreamException {
 		int _ttypeToken _token=nullint _begin=.length();
 		_ttype = ;
 		int _saveIndex;
 		Token ind=null;
 		
 		if (!(LA(1)!='\r'&&LA(1)!='\n'))
 		  throw new SemanticException("LA(1)!='\\r'&&LA(1)!='\\n'");
 		{
 		int _cnt11=0;
 		_loop11:
 		do {
 			
 			int loopStartIndex=.length();
 			int col=getColumn();
 			
 			if ((LA(1)=='\\') && (LA(2)=='$')) {
 				_saveIndex=.length();
 				match('\\');
 				.setLength(_saveIndex);
 				match('$');
 			}
 			else if ((LA(1)=='\\') && (LA(2)=='\\') && (true) && (true) && (true) && (true) && (true)) {
 				_saveIndex=.length();
 				match('\\');
 				.setLength(_saveIndex);
 				match('\\');
 			}
 			else if ((LA(1)=='\\') && (.member(LA(2))) && (true) && (true) && (true) && (true) && (true)) {
 				match('\\');
 				matchNot('$');
 			}
 			else if ((LA(1)=='\t'||LA(1)==' ') && (true) && (true) && (true) && (true) && (true) && (true)) {
 				mINDENT(true);
 				
 				if ( col==1 && LA(1)=='$' ) {
 				// store indent in ASTExpr not in a literal
 							  .setLength(loopStartIndex); // reset length to wack text
 				}
 				else =null;
 				
 			}
 			else if ((.member(LA(1))) && (true) && (true) && (true) && (true) && (true) && (true)) {
 				{
 				}
 			}
 			else {
 				if ( _cnt11>=1 ) { break _loop11; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
 			}
 			
 			_cnt11++;
 		} while (true);
 		}
 		if ((new String(.getBuffer(),_begin,.length()-_begin)).length()==0) {_ttype = .;}
 		if ( _createToken && _token==null && _ttype!=. ) {
 			_token = makeToken(_ttype);
 			_token.setText(new String(.getBuffer(), _begin.length()-_begin));
 		}
 		 = _token;
 	}
 	
 	protected final void mINDENT(boolean _createTokenthrows RecognitionExceptionCharStreamExceptionTokenStreamException {
 		int _ttypeToken _token=nullint _begin=.length();
 		_ttype = ;
 		int _saveIndex;
 		
 		{
 		int _cnt76=0;
 		_loop76:
 		do {
 			if ((LA(1)==' ') && (true) && (true) && (true) && (true) && (true) && (true)) {
 				match(' ');
 			}
 			else if ((LA(1)=='\t') && (true) && (true) && (true) && (true) && (true) && (true)) {
 				match('\t');
 			}
 			else {
 				if ( _cnt76>=1 ) { break _loop76; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
 			}
 			
 			_cnt76++;
 		} while (true);
 		}
 		if ( _createToken && _token==null && _ttype!=. ) {
 			_token = makeToken(_ttype);
 			_token.setText(new String(.getBuffer(), _begin.length()-_begin));
 		}
 		 = _token;
 	}
 	
 	public final void mNEWLINE(boolean _createTokenthrows RecognitionExceptionCharStreamExceptionTokenStreamException {
 		int _ttypeToken _token=nullint _begin=.length();
 		_ttype = ;
 		int _saveIndex;
 		
 		{
 		switch ( LA(1)) {
 		case '\r':
 		{
 			match('\r');
 			break;
 		}
 		case '\n':
 		{
 			break;
 		}
 		default:
 		{
 			throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 		}
 		}
 		}
 		match('\n');
 		if ( _createToken && _token==null && _ttype!=. ) {
 			_token = makeToken(_ttype);
 			_token.setText(new String(.getBuffer(), _begin.length()-_begin));
 		}
 		 = _token;
 	}
 	
 	public final void mACTION(boolean _createTokenthrows RecognitionExceptionCharStreamExceptionTokenStreamException {
 		int _ttypeToken _token=nullint _begin=.length();
 		_ttype = ;
 		int _saveIndex;
 		
 		int startCol = getColumn();
 		
 		
 		if ((LA(1)=='$') && (LA(2)=='\\') && (LA(3)=='\\') && (LA(4)=='$') && (.member(LA(5))) && (true) && (true)) {
 			mLINE_BREAK(false);
 			_ttype = .;
 		}
 		else if ((LA(1)=='$') && (LA(2)=='\\') && (.member(LA(3))) && (.member(LA(4))) && (true) && (true) && (true)) {
 			StringBuffer buf = new StringBuffer(); char uc = '\u0000';
 			_saveIndex=.length();
 			match('$');
 			.setLength(_saveIndex);
 			{
 			int _cnt16=0;
 			_loop16:
 			do {
 				if ((LA(1)=='\\')) {
 					uc=mESC_CHAR(false);
 					buf.append(uc);
 				}
 				else {
 					if ( _cnt16>=1 ) { break _loop16; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
 				}
 				
 				_cnt16++;
 			} while (true);
 			}
 			_saveIndex=.length();
 			match('$');
 			.setLength(_saveIndex);
 			.setLength(_begin); .append(buf.toString()); _ttype = ;
 		}
 		else if ((LA(1)=='$') && (LA(2)=='!') && ((LA(3) >= '\u0001' && LA(3) <= '\ufffe')) && ((LA(4) >= '\u0001' && LA(4) <= '\ufffe')) && (true) && (true) && (true)) {
 			mCOMMENT(false);
 			_ttype = .;
 		}
 		else if ((LA(1)=='$') && (.member(LA(2))) && ((LA(3) >= '\u0001' && LA(3) <= '\ufffe')) && (true) && (true) && (true) && (true)) {
 			{
 			if ((LA(1)=='$') && (LA(2)=='i') && (LA(3)=='f') && (LA(4)==' '||LA(4)=='(') && (.member(LA(5))) && ((LA(6) >= '\u0001' && LA(6) <= '\ufffe')) && ((LA(7) >= '\u0001' && LA(7) <= '\ufffe'))) {
 				_saveIndex=.length();
 				match('$');
 				.setLength(_saveIndex);
 				match("if");
 				{
 				_loop19:
 				do {
 					if ((LA(1)==' ')) {
 						_saveIndex=.length();
 						match(' ');
 						.setLength(_saveIndex);
 					}
 					else {
 						break _loop19;
 					}
 					
 				} while (true);
 				}
 				match("(");
 				mIF_EXPR(false);
 				match(")");
 				_saveIndex=.length();
 				match('$');
 				.setLength(_saveIndex);
 				_ttype = .;
 				{
 				if ((LA(1)=='\n'||LA(1)=='\r')) {
 					{
 					switch ( LA(1)) {
 					case '\r':
 					{
 						_saveIndex=.length();
 						match('\r');
 						.setLength(_saveIndex);
 						break;
 					}
 					case '\n':
 					{
 						break;
 					}
 					default:
 					{
 						throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 					}
 					}
 					}
 					_saveIndex=.length();
 					match('\n');
 					.setLength(_saveIndex);
 				}
 				else {
 				}
 				
 				}
 			}
 			else if ((LA(1)=='$') && (LA(2)=='e') && (LA(3)=='l') && (LA(4)=='s') && (LA(5)=='e') && (LA(6)=='i') && (LA(7)=='f')) {
 				_saveIndex=.length();
 				match('$');
 				.setLength(_saveIndex);
 				match("elseif");
 				{
 				_loop23:
 				do {
 					if ((LA(1)==' ')) {
 						_saveIndex=.length();
 						match(' ');
 						.setLength(_saveIndex);
 					}
 					else {
 						break _loop23;
 					}
 					
 				} while (true);
 				}
 				match("(");
 				mIF_EXPR(false);
 				match(")");
 				_saveIndex=.length();
 				match('$');
 				.setLength(_saveIndex);
 				_ttype = .;
 				{
 				if ((LA(1)=='\n'||LA(1)=='\r')) {
 					{
 					switch ( LA(1)) {
 					case '\r':
 					{
 						_saveIndex=.length();
 						match('\r');
 						.setLength(_saveIndex);
 						break;
 					}
 					case '\n':
 					{
 						break;
 					}
 					default:
 					{
 						throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 					}
 					}
 					}
 					_saveIndex=.length();
 					match('\n');
 					.setLength(_saveIndex);
 				}
 				else {
 				}
 				
 				}
 			}
 			else if ((LA(1)=='$') && (LA(2)=='e') && (LA(3)=='n') && (LA(4)=='d') && (LA(5)=='i') && (LA(6)=='f') && (LA(7)=='$')) {
 				_saveIndex=.length();
 				match('$');
 				.setLength(_saveIndex);
 				match("endif");
 				_saveIndex=.length();
 				match('$');
 				.setLength(_saveIndex);
 				_ttype = .;
 				{
 				if (((LA(1)=='\n'||LA(1)=='\r'))&&(startCol==1)) {
 					{
 					switch ( LA(1)) {
 					case '\r':
 					{
 						_saveIndex=.length();
 						match('\r');
 						.setLength(_saveIndex);
 						break;
 					}
 					case '\n':
 					{
 						break;
 					}
 					default:
 					{
 						throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 					}
 					}
 					}
 					_saveIndex=.length();
 					match('\n');
 					.setLength(_saveIndex);
 				}
 				else {
 				}
 				
 				}
 			}
 			else if ((LA(1)=='$') && (LA(2)=='e') && (LA(3)=='l') && (LA(4)=='s') && (LA(5)=='e') && (LA(6)=='$') && (true)) {
 				_saveIndex=.length();
 				match('$');
 				.setLength(_saveIndex);
 				match("else");
 				_saveIndex=.length();
 				match('$');
 				.setLength(_saveIndex);
 				_ttype = .;
 				{
 				if ((LA(1)=='\n'||LA(1)=='\r')) {
 					{
 					switch ( LA(1)) {
 					case '\r':
 					{
 						_saveIndex=.length();
 						match('\r');
 						.setLength(_saveIndex);
 						break;
 					}
 					case '\n':
 					{
 						break;
 					}
 					default:
 					{
 						throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 					}
 					}
 					}
 					_saveIndex=.length();
 					match('\n');
 					.setLength(_saveIndex);
 				}
 				else {
 				}
 				
 				}
 			}
 			else if ((LA(1)=='$') && (LA(2)=='@') && (.member(LA(3))) && ((LA(4) >= '\u0001' && LA(4) <= '\ufffe')) && ((LA(5) >= '\u0001' && LA(5) <= '\ufffe')) && ((LA(6) >= '\u0001' && LA(6) <= '\ufffe')) && (true)) {
 				_saveIndex=.length();
 				match('$');
 				.setLength(_saveIndex);
 				_saveIndex=.length();
 				match('@');
 				.setLength(_saveIndex);
 				{
 				int _cnt32=0;
 				_loop32:
 				do {
 					if ((.member(LA(1)))) {
 						{
 						}
 					}
 					else {
 						if ( _cnt32>=1 ) { break _loop32; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
 					}
 					
 					_cnt32++;
 				} while (true);
 				}
 				{
 				switch ( LA(1)) {
 				case '(':
 				{
 					_saveIndex=.length();
 					match("()");
 					.setLength(_saveIndex);
 					_saveIndex=.length();
 					match('$');
 					.setLength(_saveIndex);
 					break;
 				}
 				case '$':
 				{
 					_saveIndex=.length();
 					match('$');
 					.setLength(_saveIndex);
 							String t=new String(.getBuffer(),_begin,.length()-_begin);
 							.setLength(_begin); .append(t+"::=");
 							
 					{
 					if ((LA(1)=='\n'||LA(1)=='\r') && ((LA(2) >= '\u0001' && LA(2) <= '\ufffe')) && ((LA(3) >= '\u0001' && LA(3) <= '\ufffe')) && (true) && (true) && (true) && (true)) {
 						{
 						switch ( LA(1)) {
 						case '\r':
 						{
 							_saveIndex=.length();
 							match('\r');
 							.setLength(_saveIndex);
 							break;
 						}
 						case '\n':
 						{
 							break;
 						}
 						default:
 						{
 							throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 						}
 						}
 						}
 						_saveIndex=.length();
 						match('\n');
 						.setLength(_saveIndex);
 					}
 					else if (((LA(1) >= '\u0001' && LA(1) <= '\ufffe')) && ((LA(2) >= '\u0001' && LA(2) <= '\ufffe')) && (true) && (true) && (true) && (true) && (true)) {
 					}
 					else {
 						throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 					}
 					
 					}
 					boolean atLeft = false;
 					{
 					int _cnt39=0;
 					_loop39:
 					do {
 						if ((((LA(1) >= '\u0001' && LA(1) <= '\ufffe')) && ((LA(2) >= '\u0001' && LA(2) <= '\ufffe')) && (true) && (true) && (true) && (true) && (true))&&(!(upcomingAtEND(1)||(upcomingNewline(1)&&upcomingAtEND(2))))) {
 							{
 							if ((LA(1)=='\n'||LA(1)=='\r') && ((LA(2) >= '\u0001' && LA(2) <= '\ufffe')) && (true) && (true) && (true) && (true) && (true)) {
 								{
 								switch ( LA(1)) {
 								case '\r':
 								{
 									match('\r');
 									break;
 								}
 								case '\n':
 								{
 									break;
 								}
 								default:
 								{
 									throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 								}
 								}
 								}
 								match('\n');
 								newline(); atLeft = true;
 							}
 							else if (((LA(1) >= '\u0001' && LA(1) <= '\ufffe')) && ((LA(2) >= '\u0001' && LA(2) <= '\ufffe')) && (true) && (true) && (true) && (true) && (true)) {
 								atLeft = false;
 							}
 							else {
 								throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 							}
 							
 							}
 						}
 						else {
 							if ( _cnt39>=1 ) { break _loop39; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
 						}
 						
 						_cnt39++;
 					} while (true);
 					}
 					{
 					if ((LA(1)=='\n'||LA(1)=='\r') && ((LA(2) >= '\u0001' && LA(2) <= '\ufffe')) && (true) && (true) && (true) && (true) && (true)) {
 						{
 						switch ( LA(1)) {
 						case '\r':
 						{
 							_saveIndex=.length();
 							match('\r');
 							.setLength(_saveIndex);
 							break;
 						}
 						case '\n':
 						{
 							break;
 						}
 						default:
 						{
 							throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 						}
 						}
 						}
 						_saveIndex=.length();
 						match('\n');
 						.setLength(_saveIndex);
 						newline(); atLeft = true;
 					}
 					else if (((LA(1) >= '\u0001' && LA(1) <= '\ufffe')) && (true) && (true) && (true) && (true) && (true) && (true)) {
 					}
 					else {
 						throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 					}
 					
 					}
 					{
 					if ((LA(1)=='$') && (LA(2)=='@')) {
 						_saveIndex=.length();
 						match("$@end$");
 						.setLength(_saveIndex);
 					}
 					else if (((LA(1) >= '\u0001' && LA(1) <= '\ufffe')) && (true)) {
 						.error("missing region "+t+" $@end$ tag");
 					}
 					else {
 						throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 					}
 					
 					}
 					{
 					if (((LA(1)=='\n'||LA(1)=='\r'))&&(atLeft)) {
 						{
 						switch ( LA(1)) {
 						case '\r':
 						{
 							_saveIndex=.length();
 							match('\r');
 							.setLength(_saveIndex);
 							break;
 						}
 						case '\n':
 						{
 							break;
 						}
 						default:
 						{
 							throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 						}
 						}
 						}
 						_saveIndex=.length();
 						match('\n');
 						.setLength(_saveIndex);
 					}
 					else {
 					}
 					
 					}
 					break;
 				}
 				default:
 				{
 					throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 				}
 				}
 				}
 			}
 			else if ((LA(1)=='$') && (.member(LA(2))) && ((LA(3) >= '\u0001' && LA(3) <= '\ufffe')) && (true) && (true) && (true) && (true)) {
 				_saveIndex=.length();
 				match('$');
 				.setLength(_saveIndex);
 				mEXPR(false);
 				_saveIndex=.length();
 				match('$');
 				.setLength(_saveIndex);
 			}
 			else {
 				throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 			}
 			
 			}
 			
 			ChunkToken t = new ChunkToken(_ttypenew String(.getBuffer(),_begin,.length()-_begin), );
 			_token = t;
 				
 		}
 		else {
 			throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 		}
 		
 		if ( _createToken && _token==null && _ttype!=. ) {
 			_token = makeToken(_ttype);
 			_token.setText(new String(.getBuffer(), _begin.length()-_begin));
 		}
 		 = _token;
 	}
 	
 	protected final void mLINE_BREAK(boolean _createTokenthrows RecognitionExceptionCharStreamExceptionTokenStreamException {
 		int _ttypeToken _token=nullint _begin=.length();
 		_ttype = ;
 		int _saveIndex;
 		
 		match("$\\\\$");
 		{
 		switch ( LA(1)) {
 		case '\t':  case ' ':
 		{
 			mINDENT(false);
 			break;
 		}
 		case '\n':  case '\r':
 		{
 			break;
 		}
 		default:
 		{
 			throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 		}
 		}
 		}
 		{
 		switch ( LA(1)) {
 		case '\r':
 		{
 			match('\r');
 			break;
 		}
 		case '\n':
 		{
 			break;
 		}
 		default:
 		{
 			throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 		}
 		}
 		}
 		match('\n');
 		{
 		if ((LA(1)=='\t'||LA(1)==' ')) {
 			mINDENT(false);
 		}
 		else {
 		}
 		
 		}
 		if ( _createToken && _token==null && _ttype!=. ) {
 			_token = makeToken(_ttype);
 			_token.setText(new String(.getBuffer(), _begin.length()-_begin));
 		}
 		 = _token;
 	}
 	
 	protected final char  mESC_CHAR(boolean _createTokenthrows RecognitionExceptionCharStreamExceptionTokenStreamException {
 		char uc='\u0000';
 		int _ttypeToken _token=nullint _begin=.length();
 		_ttype = ;
 		int _saveIndex;
 		Token a=null;
 		Token b=null;
 		Token c=null;
 		Token d=null;
 		
 		if ((LA(1)=='\\') && (LA(2)=='n')) {
 			_saveIndex=.length();
 			match("\\n");
 			.setLength(_saveIndex);
 			uc = '\n';
 		}
 		else if ((LA(1)=='\\') && (LA(2)=='r')) {
 			_saveIndex=.length();
 			match("\\r");
 			.setLength(_saveIndex);
 			uc = '\r';
 		}
 		else if ((LA(1)=='\\') && (LA(2)=='t')) {
 			_saveIndex=.length();
 			match("\\t");
 			.setLength(_saveIndex);
 			uc = '\t';
 		}
 		else if ((LA(1)=='\\') && (LA(2)==' ')) {
 			_saveIndex=.length();
 			match("\\ ");
 			.setLength(_saveIndex);
 			uc = ' ';
 		}
 		else if ((LA(1)=='\\') && (LA(2)=='u')) {
 			_saveIndex=.length();
 			match("\\u");
 			.setLength(_saveIndex);
 			_saveIndex=.length();
 			mHEX(true);
 			.setLength(_saveIndex);
 			_saveIndex=.length();
 			mHEX(true);
 			.setLength(_saveIndex);
 			_saveIndex=.length();
 			mHEX(true);
 			.setLength(_saveIndex);
 			_saveIndex=.length();
 			mHEX(true);
 			.setLength(_saveIndex);
 			uc = (char)Integer.parseInt(a.getText()+b.getText()+c.getText()+d.getText(), 16);
 		}
 		else {
 			throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 		}
 		
 		if ( _createToken && _token==null && _ttype!=. ) {
 			_token = makeToken(_ttype);
 			_token.setText(new String(.getBuffer(), _begin.length()-_begin));
 		}
 		 = _token;
 		return uc;
 	}
 	
 	protected final void mCOMMENT(boolean _createTokenthrows RecognitionExceptionCharStreamExceptionTokenStreamException {
 		int _ttypeToken _token=nullint _begin=.length();
 		_ttype = ;
 		int _saveIndex;
 		
 		int startCol = getColumn();
 		
 		
 		match("$!");
 		{
 		_loop80:
 		do {
 			// nongreedy exit test
 			if ((LA(1)=='!') && (LA(2)=='$') && (true) && (true) && (true) && (true) && (true)) break _loop80;
 			if ((LA(1)=='\n'||LA(1)=='\r') && ((LA(2) >= '\u0001' && LA(2) <= '\ufffe')) && ((LA(3) >= '\u0001' && LA(3) <= '\ufffe')) && (true) && (true) && (true) && (true)) {
 				{
 				switch ( LA(1)) {
 				case '\r':
 				{
 					match('\r');
 					break;
 				}
 				case '\n':
 				{
 					break;
 				}
 				default:
 				{
 					throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 				}
 				}
 				}
 				match('\n');
 			}
 			else if (((LA(1) >= '\u0001' && LA(1) <= '\ufffe')) && ((LA(2) >= '\u0001' && LA(2) <= '\ufffe')) && ((LA(3) >= '\u0001' && LA(3) <= '\ufffe')) && (true) && (true) && (true) && (true)) {
 			}
 			else {
 				break _loop80;
 			}
 			
 		} while (true);
 		}
 		match("!$");
 		{
 		if (((LA(1)=='\n'||LA(1)=='\r'))&&(startCol==1)) {
 			{
 			switch ( LA(1)) {
 			case '\r':
 			{
 				match('\r');
 				break;
 			}
 			case '\n':
 			{
 				break;
 			}
 			default:
 			{
 				throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 			}
 			}
 			}
 			match('\n');
 		}
 		else {
 		}
 		
 		}
 		if ( _createToken && _token==null && _ttype!=. ) {
 			_token = makeToken(_ttype);
 			_token.setText(new String(.getBuffer(), _begin.length()-_begin));
 		}
 		 = _token;
 	}
 	
 	protected final void mIF_EXPR(boolean _createTokenthrows RecognitionExceptionCharStreamExceptionTokenStreamException {
 		int _ttypeToken _token=nullint _begin=.length();
 		_ttype = ;
 		int _saveIndex;
 		
 		{
 		int _cnt64=0;
 		_loop64:
 		do {
 			switch ( LA(1)) {
 			case '\\':
 			{
 				mESC(false);
 				break;
 			}
 			case '\n':  case '\r':
 			{
 				{
 				switch ( LA(1)) {
 				case '\r':
 				{
 					match('\r');
 					break;
 				}
 				case '\n':
 				{
 					break;
 				}
 				default:
 				{
 					throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
 				}
 				}
				match('\n');
				break;
			case '{':
				break;
			case '(':
				break;
			default:
				if ((.member(LA(1)))) {
			else {
				if ( _cnt64>=1 ) { break _loop64; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
			_cnt64++;
while (true);
		if ( _createToken && _token==null && _ttype!=. ) {
			_token = makeToken(_ttype);
			_token.setText(new String(.getBuffer(), _begin.length()-_begin));
		 = _token;
	protected final void mEXPR(boolean _createTokenthrows RecognitionExceptionCharStreamExceptionTokenStreamException {
		int _ttypeToken _token=nullint _begin=.length();
		_ttype = ;
		int _saveIndex;
		int _cnt52=0;
		_loop52:
		do {
			switch ( LA(1)) {
			case '\\':
				mESC(false);
				break;
			case '\n':  case '\r':
				switch ( LA(1)) {
				case '\r':
					match('\r');
					break;
				case '\n':
					break;
				default:
					throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
				match('\n');
				break;
			case '{':
				break;
			default:
				if ((LA(1)=='+'||LA(1)=='=') && (LA(2)=='"'||LA(2)=='<')) {
					switch ( LA(1)) {
					case '=':
						match('=');
						break;
					case '+':
						match('+');
						break;
					default:
						throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
					mTEMPLATE(false);
				else if ((LA(1)=='+'||LA(1)=='=') && (LA(2)=='{')) {
					switch ( LA(1)) {
					case '=':
						match('=');
						break;
					case '+':
						match('+');
						break;
					default:
						throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
				else if ((LA(1)=='+'||LA(1)=='=') && (.member(LA(2)))) {
					switch ( LA(1)) {
					case '=':
						match('=');
						break;
					case '+':
						match('+');
						break;
					default:
						throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());