コード例 #1
0
        private Lexeme Lexeme(LexemeKind kind, string content = null)
        {
            if (kind == LexemeKind.NewLine)
            {
                Column = 0;
                Line++;
            }

            content = content ?? kind.GetCharacter() ?? Buffer.ToString();
            Buffer.Clear();

            return(new Lexeme(kind, Location, content));
        }
コード例 #2
0
ファイル: Parser.cs プロジェクト: pipe01/LICC
        private Lexeme Take(LexemeKind lexemeKind, string expected = null, bool ignoreWhitespace = true)
        {
            if (ignoreWhitespace)
            {
                SkipWhitespaces();
            }

            if (Current.Kind != lexemeKind)
            {
                var lexemeChar = lexemeKind.GetCharacter();
                Error($"expected {expected ?? lexemeKind.ToString()}{(lexemeChar != null ? $" '{lexemeChar}'" : "")}, found '{Current.Content}' ({Current.Kind})");
            }

            return(TakeAny());
        }