internal IList<Token> InterpretLine(string line)
{
if (line == null) return null;
var commentStart = line.IndexOf("//");
if (commentStart >= 0) line = line.Substring(0, commentStart);
if (line.Length == 0) return new Token[0];
var tokens = new List<Token>();
line = InterpretSpaces(tokens, line);
line = ChunkOff(line, "AND", tokens, TokenKind.And);
line = ChunkOff(line, "OR", tokens, TokenKind.Or);
line = ChunkOff(line, "NOT", tokens, TokenKind.Not);
line = line.Trim();
if (line.Length != 0)
{
tokens.Add(new Token() { Kind = TokenKind.Statement, Line = lineNum, Value = line });
}
return tokens;
}