Example #1
0
        public IEnumerable GenerateLexemes(string input)
        {
            yield return(GetWhiteSpace(input));

            itr.Line = TrimWhiteSpace(input, itr);

            while (itr.MoveNext())
            {
                switch (itr.Mode)
                {
                case LexerMode.Normal:
                    foreach (var result in NormalMode(itr))
                    {
                        yield return(result);
                    }
                    break;

                case LexerMode.String:
                    foreach (var result in StringMode(itr))
                    {
                        yield return(result);
                    }
                    break;

                case LexerMode.Comment:
                case LexerMode.MultiComment:
                    CommentMode(itr);
                    break;
                }
            }
            itr.Reset();

            if (itr.Mode == LexerMode.String)
            {
                yield return("+");
            }
            yield return(@"\n");
        }