public Token DoAction(MakeStringContent content, string s)
 {
     if (content.C == '\'')
     {
         return(new Token(TokenType.STRING, s));
     }
     else
     {
         return(null);
     }
 }
예제 #2
0
        public static Token MakeString(PeekableEnumerableAdapter <char> iterator)
        {
            string            s          = "";
            IMakeStringState  startState = new StartMakeStringState();
            MakeStringContent content    = new MakeStringContent(startState);

            while (iterator.HasNext)
            {
                char c = iterator.Next();
                content.C = c;
                Token token = content.State.DoAction(content, s + c);
                if (token != null)
                {
                    return(token);
                }
                else
                {
                    s = content.Concat(s);
                }
            }
            throw new LexicalException("Unexpected error");
        }