Ancestry.Daisy.Language.Lexer.InterpretLine C# (CSharp) Method

InterpretLine() private method

private InterpretLine ( string line ) : IList
line string
return IList
        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;
        }

Usage Example

Beispiel #1
0
 public void ItFigouresOutGroupStartOrEnd(int spacesBefore,string line, IEnumerable<Token> expected)
 {
     var lexer = new Lexer(line.ToStream());
     lexer.InterpretLine(string.Empty.PadRight(spacesBefore));
     var tokens = lexer.InterpretLine(line).ToArray();
     AssertTokenStreamEquals(expected.ToArray(), tokens);
 }