code: function() {
  					var number = '', ch, chCode;
  					while(isDecimalDigit(exprICode(index))) {
  						number += exprI(index++);
  					}
  
  					if(exprICode(index) === PERIOD_CODE) { // can start with a decimal marker
  						number += exprI(index++);
  
  						while(isDecimalDigit(exprICode(index))) {
  							number += exprI(index++);
  						}
  					}
  
  					ch = exprI(index);
  					if(ch === 'e' || ch === 'E') { // exponent marker
  						number += exprI(index++);
  						ch = exprI(index);
  						if(ch === '+' || ch === '-') { // exponent sign
  							number += exprI(index++);
  						}
  						while(isDecimalDigit(exprICode(index))) { //exponent itself
  							number += exprI(index++);
  						}
  						if(!isDecimalDigit(exprICode(index-1)) ) {
  							throwError('Expected exponent (' + number + exprI(index) + ')', index);
  						}
  					}
  
  
  					chCode = exprICode(index);
  					// Check to make sure this isn't a variable name that start with a number (123abc)
  					if(isIdentifierStart(chCode)) {
  						throwError('Variable names cannot start with a number (' +
  									number + exprI(index) + ')', index);
  					} else if(chCode === PERIOD_CODE) {
  						throwError('Unexpected period', index);
  					}
  
  					return {
  						type: LITERAL,
  						value: parseFloat(number),
  						raw: number
  					};
  				}
docs: `index` stores the character number we are currently at while `length` is a constant All of the gobbles below will modify `index` as we move along