function () {
			if (/\w/.test(this.currentChar)) return this.readWord();
			if (/["'`]/.test(this.currentChar)) return this.readString();
			if (/[()]/.test(this.currentChar)) return this.readGroupSymbol();
			if (/[!=<>]/.test(this.currentChar)) return this.readOperator();

			if (this.currentChar === "") return {type: 'eot', value: ''};
			else {
				this.readNextChar();
				return {type: 'empty', value: ''};
			}
		}
function () {
			if (/\w/.test(this.currentChar)) return this.readWord();
			if (/["'`]/.test(this.currentChar)) return this.readString();
			if (/[()]/.test(this.currentChar)) return this.readGroupSymbol();
			if (/[!=<>]/.test(this.currentChar)) return this.readOperator();

			if (this.currentChar === "") return {type: 'eot', value: ''};
			else {
				this.readNextChar();
				return {type: 'empty', value: ''};
			}
		}
function ( ) { if ( / \w / . test ( this . currentChar ) ) return this . readWord ( ) ; if ( / ["'`] / . test ( this . currentChar ) ) return this . readString ( ) ; if ( / [()] / . test ( this . currentChar ) ) return this . readGroupSymbol ( ) ; if ( / [!=<>] / . test ( this . currentChar ) ) return this . readOperator ( ) ; if ( this . currentChar === "" ) return { type : 'eot' , value : '' } ; else { this . readNextChar ( ) ; return { type : 'empty' , value : '' } ; } }
Determine the next token
Determine the next token