System.Linq.Dynamic.Scanner.Scanner C# (CSharp) Method

Scanner() public method

public Scanner ( ) : System
return System
		public Scanner()
		{
			Patterns = new Dictionary<TokenType, Regex>();
			_tokens = new List<TokenType>();
			_lookAheadToken = null;
			Skipped = new List<Token>();

			_skipList = new List<TokenType> { TokenType.WHITESPACE };

			var regex = new Regex(@"\?", RegexOptions.Compiled);
			Patterns.Add(TokenType.QUESTION, regex);
			_tokens.Add(TokenType.QUESTION);

			regex = new Regex(":", RegexOptions.Compiled);
			Patterns.Add(TokenType.COLON, regex);
			_tokens.Add(TokenType.COLON);

			regex = new Regex("[a-z]+", RegexOptions.Compiled);
			Patterns.Add(TokenType.ANY, regex);
			_tokens.Add(TokenType.ANY);

			regex = new Regex(@"\|\||or", RegexOptions.Compiled);
			Patterns.Add(TokenType.OR, regex);
			_tokens.Add(TokenType.OR);

			regex = new Regex(@"&&|and", RegexOptions.Compiled);
			Patterns.Add(TokenType.AND, regex);
			_tokens.Add(TokenType.AND);

			regex = new Regex(@"<|<=|>|>=|==|!=", RegexOptions.Compiled);
			Patterns.Add(TokenType.COMPARISON, regex);
			_tokens.Add(TokenType.COMPARISON);

			regex = new Regex("[-+&]", RegexOptions.Compiled);
			Patterns.Add(TokenType.ADDITIVE, regex);
			_tokens.Add(TokenType.ADDITIVE);

			regex = new Regex(@"[*/%]|mod|div", RegexOptions.Compiled);
			Patterns.Add(TokenType.MULTIPLICATIVE, regex);
			_tokens.Add(TokenType.MULTIPLICATIVE);

			regex = new Regex("-|!|not", RegexOptions.Compiled);
			Patterns.Add(TokenType.UNARY, regex);
			_tokens.Add(TokenType.UNARY);

			regex = new Regex(@"\.", RegexOptions.Compiled);
			Patterns.Add(TokenType.DOT, regex);
			_tokens.Add(TokenType.DOT);

			regex = new Regex("[a-zA-Z_][a-zA-Z_0-9]*", RegexOptions.Compiled);
			Patterns.Add(TokenType.IDENTIFIER, regex);
			_tokens.Add(TokenType.IDENTIFIER);

			regex = new Regex("[a-zA-Z_][a-zA-Z_0-9]*:", RegexOptions.Compiled);
			Patterns.Add(TokenType.SEMICOLONNAME, regex);
			_tokens.Add(TokenType.SEMICOLONNAME);

			regex = new Regex("as ([a-zA-Z_][a-zA-Z_0-9]*)", RegexOptions.Compiled);
			Patterns.Add(TokenType.ASNAME, regex);
			_tokens.Add(TokenType.ASNAME);

			regex = new Regex(@"([""'])[^""\\\r\n]*(?:\\.[^""\\\r\n]*)*\1", RegexOptions.Compiled);
			Patterns.Add(TokenType.STRING, regex);
			_tokens.Add(TokenType.STRING);

			regex = new Regex(@"[0-9]+", RegexOptions.Compiled);
			Patterns.Add(TokenType.INTEGER, regex);
			_tokens.Add(TokenType.INTEGER);

			regex = new Regex(@"[0-9]*\.[0-9]+", RegexOptions.Compiled);
			Patterns.Add(TokenType.REAL, regex);
			_tokens.Add(TokenType.REAL);

			regex = new Regex(@"\(", RegexOptions.Compiled);
			Patterns.Add(TokenType.OPENPAREN, regex);
			_tokens.Add(TokenType.OPENPAREN);

			regex = new Regex(@"\)", RegexOptions.Compiled);
			Patterns.Add(TokenType.CLOSEPAREN, regex);
			_tokens.Add(TokenType.CLOSEPAREN);

			regex = new Regex(@"\{", RegexOptions.Compiled);
			Patterns.Add(TokenType.OPENCURLY, regex);
			_tokens.Add(TokenType.OPENCURLY);

			regex = new Regex(@"}", RegexOptions.Compiled);
			Patterns.Add(TokenType.CLOSECURLY, regex);
			_tokens.Add(TokenType.CLOSECURLY);

			regex = new Regex("in", RegexOptions.Compiled);
			Patterns.Add(TokenType.IN, regex);
			_tokens.Add(TokenType.IN);

			regex = new Regex(",", RegexOptions.Compiled);
			Patterns.Add(TokenType.COMMA, regex);
			_tokens.Add(TokenType.COMMA);

			regex = new Regex(@"\[", RegexOptions.Compiled);
			Patterns.Add(TokenType.OPENSQUARE, regex);
			_tokens.Add(TokenType.OPENSQUARE);

			regex = new Regex(@"]", RegexOptions.Compiled);
			Patterns.Add(TokenType.CLOSESQUARE, regex);
			_tokens.Add(TokenType.CLOSESQUARE);

			regex = new Regex("new", RegexOptions.Compiled);
			Patterns.Add(TokenType.NEW, regex);
			_tokens.Add(TokenType.NEW);

			regex = new Regex(@"^$", RegexOptions.Compiled);
			Patterns.Add(TokenType.EOF, regex);
			_tokens.Add(TokenType.EOF);

			regex = new Regex(@"\s+", RegexOptions.Compiled);
			Patterns.Add(TokenType.WHITESPACE, regex);
			_tokens.Add(TokenType.WHITESPACE);


		}