Example #1
0
        /// <summary>
        /// Lexicalizes the stream to tokens
        /// </summary>
        public void LexicalizeStream()
        {
            TokenStream.Clear(); //Clean stream before inserting items

            CurrentToken = tokenizer.NextToken();
            while (CurrentToken != StreamTokenizer.EOF)
            {
                switch (CurrentToken)
                {
                case StreamTokenizer.LAYOUT:     // ignore layout
                    CurrentToken = tokenizer.NextToken();
                    break;

                case StreamTokenizer.COMMENT:     // ignore comments
                    CurrentToken = tokenizer.NextToken();
                    break;

                case StreamTokenizer.WORD:     // check word to determine type
                    LexicalizeWord();
                    break;

                case StreamTokenizer.NUMBER:     // numeric value
                    LexicalizeNumber();
                    break;

                case StreamTokenizer.CHARACTER:               // Character
                    if (tokenizer.GetCharacterValue() == '"') // Possible a quote
                    {
                        LexicalizeQuote();
                    }
                    else if (tokenizer.GetCharacterValue() == '\'')     //Waebric Symbol ('symbol )
                    {
                        LexicalizeSymbol();
                    }
                    else
                    {       // Just an character
                        LexicalizeCharacter();
                    }
                    break;

                default:     //Other tokens are not correct
                    throw new StreamTokenizerException("Invalid token: " + CurrentToken, tokenizer.GetScannedLines());
                }
            }
        }