Example #1
0
        private LexMode SetMode(LexMode mode)
        {
            var tmp = this.Mode;

            this.Mode = mode | (tmp & (LexMode.MaskXmlDocCommentLocation | LexMode.MaskXmlDocCommentStyle));
            return(tmp);
        }
Example #2
0
        private Token PopToken()
        {
            StackToken _StackToken = _tokens.Pop();

            _currentMode = _StackToken._LexMode;

            return(_StackToken._Token);
        }
Example #3
0
        private Token DequeueToken()
        {
            StackToken _StackToken = _que.Dequeue();

            _currentMode = _StackToken._LexMode;

            return(_StackToken._Token);
        }
Example #4
0
        private void PushToken(Token _token, LexMode _LexMode)
        {
            StackToken _StackToken = new StackToken();

            _StackToken._Token   = _token;
            _StackToken._LexMode = _LexMode;

            _tokens.Push(_StackToken);
        }
Example #5
0
        private void QueueToken(Token _token, LexMode _LexMode)
        {
            StackToken _StackToken = new StackToken();

            _StackToken._Token   = _token;
            _StackToken._LexMode = _LexMode;

            _que.Enqueue(_StackToken);
        }
Example #6
0
        private void Reset()
        {
            modes       = new Stack <LexMode>();
            currentMode = LexMode.Text;
            modes.Push(currentMode);

            line   = 1;
            column = 1;
            pos    = 0;
        }
Example #7
0
        private void Reset()
        {
            _modes       = new Stack <LexMode>();
            _currentMode = LexMode.Text;
            _modes.Push(_currentMode);

            _line   = 1;
            _column = 1;
            _pos    = 0;
        }
Example #8
0
        private void Reset()
        {
            _Modes       = new Stack <LexMode>();
            _CurrentMode = LexMode.Text;
            _Modes.Push(_CurrentMode);

            _Line   = 1;
            _Column = 1;
            _Pos    = 0;
        }
Example #9
0
        private void Initialize()
        {
            _modes       = new Stack <LexMode>();
            _que         = new Queue <StackToken>();
            _currentMode = LexMode.Text;
            _modes.Push(_currentMode);

            _line   = 1;
            _column = 1;
            _pos    = 0;
        }
Example #10
0
        public Lexer(string text)
        {
            this.text = text;

            modes = new Stack<LexMode>();
            currentMode = LexMode.Text;
            modes.Push(currentMode);

            line = 1;
            column = 1;
            pos = 0;
        }
Example #11
0
		private void LeaveMode()
		{
			_CurrentMode = _Modes.Pop();
		}
Example #12
0
		private void EnterMode(LexMode mode)
		{
			_Modes.Push(_CurrentMode);
			_CurrentMode = mode;
		}
Example #13
0
 internal void ReInitialize(LexMode modeflags)
 {
     base.ReInitialize();
     this.Mode   = LexMode.XmlDocComment | LexMode.XmlDocCommentLocationStart | modeflags;
     isDelimited = (modeflags & LexMode.XmlDocCommentStyleDelimited) != 0;
 }
Example #14
0
 private void LeaveMode()
 {
     _currentMode = _modes.Pop();
 }
Example #15
0
 private void EnterMode(LexMode mode)
 {
     _modes.Push(_currentMode);
     _currentMode = mode;
 }
Example #16
0
 private void ResetMode(LexMode mode)
 {
     this.Mode = mode;
 }
Example #17
0
        private Token NextText()
        {
            SavePoint();

StartTextRead:

            switch (LA(0))
            {
            case EOF:
                if (_save_pos == _pos)
                {
                    return(NewToken(TokenKind.EOF, "EOF"));
                }
                else
                {
                    break;
                }

            case '$':
                if (LA(1) == '$')
                {
                    Consume(2);
                    goto StartTextRead;
                }
                else if (_save_pos == _pos && LA(1) == '{')
                {
                    Consume(2);
                    SkipWhiteSpace();
                    EnterMode(LexMode.Expression);
                    return(NewToken(TokenKind.ExpStart));
                }
                else if (_save_pos == _pos && (char.IsLetter(LA(1)) || LA(1) == '_'))
                {
                    Consume();
                    QueueToken(NewToken(TokenKind.ExpStart, "${"), LexMode.Expression);
                    QueueToken(ReadId(), LexMode.Expression);

                    if (LA(0) == '.' && char.IsLetter(LA(1)))
                    {
                        Consume();
                        QueueToken(NewToken(TokenKind.Dot, "."), LexMode.Expression);
                        QueueToken(ReadId(), LexMode.Expression);
                    }

                    QueueToken(NewToken(TokenKind.ExpEnd, "}"), _currentMode);
                    return(Next());
                }
                else
                {
                    //Consume();
                    //goto StartTextRead;
                    if (_r >= 1000)
                    {
                        string ss = "";
                        int    _i = 0;

                        while (_i < 10 && LA(_i) != EOF)
                        {
                            ss = ss + LA(_i);
                            _i++;
                        }

                        throw new VoltException("loop...: " + _line + "/" + _column + " [" + ss + "]", _line, _column);
                    }

                    _r++;
                    break;
                }

            case '}':
            case _PREFIX:

                bool _f_tag_start = false;
                bool _f_tag_end   = false;
                int  eat_char     = 1;

                LexMode _Mode = LexMode.Text;

                if (LA(0) == _PREFIX && LA(1) == _PREFIX)
                {
                    Consume(2);
                    goto StartTextRead;
                }
                else if (LA(0) == _PREFIX)
                {
                    if (LA(1) == '{')
                    {
                        eat_char     = 2;
                        _f_tag_start = true;
                    }
                    else if (Peek(8).ToLower() == _PREFIX + "define ")
                    {
                        _f_tag_start = true;
                    }
                    else if (Peek(7).ToLower() == _PREFIX + "using ")
                    {
                        _f_tag_start = true;
                    }
                    else if (Peek(5).ToLower() == _PREFIX + "for ")
                    {
                        _f_tag_start = true;
                    }
                    else if (Peek(4).ToLower() == _PREFIX + "if ")
                    {
                        _f_tag_start = true;
                        _Mode        = LexMode.If;
                    }
                    else if (Peek(9).ToLower() == _PREFIX + "foreach ")
                    {
                        _f_tag_start = true;
                    }
                    else if (Peek(5).ToLower() == _PREFIX + "else")
                    {
                        _f_tag_start = true;
                    }
                }
                else if (LA(0) == '}')
                {
                    if (Peek(9).ToLower() == "}" + _PREFIX + "elseif ")
                    {
                        eat_char     = 2;
                        _f_tag_start = true;
                        _Mode        = LexMode.ElseIf;
                    }
                    else if (Peek(6).ToLower() == "}" + _PREFIX + "else")
                    {
                        eat_char     = 2;
                        _f_tag_start = true;
                    }
                    else if (LA(1) == _PREFIX && LA(2) == '{' && (LA(3) == 'e' || LA(3) == 'E'))
                    {
                        eat_char     = 3;
                        _f_tag_start = true;
                    }
                    else if (LA(1) == _PREFIX && (LA(2) == '\t' || LA(2) == '\n' || LA(2) == '\r' || LA(2) == ' '))
                    {
                        eat_char   = 2;
                        _f_tag_end = true;
                    }
                }

                if (_f_tag_start)
                {
                    if (_save_pos == _pos)
                    {
                        if (eat_char == 0)
                        {
                            Consume();
                        }
                        else
                        {
                            Consume(eat_char);
                        }
                        if (_Mode == LexMode.If)
                        {
                            EnterMode(LexMode.If);
                            return(NewToken(TokenKind.If));
                        }
                        else if (_Mode == LexMode.ElseIf)
                        {
                            EnterMode(LexMode.If);
                            return(NewToken(TokenKind.ElseIf));
                        }
                        else
                        {
                            EnterMode(LexMode.Tag);
                            return(NewToken(TokenKind.TagStart));
                        }
                    }
                    else
                    {
                        break;
                    }
                }
                else if (_f_tag_end)
                {
                    if (_save_pos == _pos)
                    {
                        if (eat_char == 0)
                        {
                            Consume();
                        }
                        else
                        {
                            Consume(eat_char);
                        }
                        EnterMode(LexMode.Tag);

                        return(NewToken(TokenKind.TagClose));
                    }
                    else
                    {
                        break;
                    }
                }

                Consume();
                goto StartTextRead;

            case '\n':
            case '\r':
                SkipWhiteSpace();
                goto StartTextRead;

            default:
                Consume();
                goto StartTextRead;
            }

            return(NewToken(TokenKind.TextData));
        }
Example #18
0
 private void LeaveMode()
 {
     _currentMode = _modes.Pop();
 }
Example #19
0
 internal XmlDocCommentParser(Lexer lexer, LexMode modeflags)
     : base(lexer.Options, lexer, LexMode.XmlDocComment | LexMode.XmlDocCommentLocationStart | modeflags, null, null, true)
 {
     isDelimited = (modeflags & LexMode.XmlDocCommentStyleDelimited) != 0;
 }
 private void LeaveMode()
 {
     currentMode = modes.Pop();
 }
Example #21
0
 void LeaveMode()
 {
     currentMode = modes.Pop();
 }
Example #22
0
 public void LeaveMode()
 {
     _currentMode = _modes.Pop();
 }
Example #23
0
 public void EnterMode(LexMode mode)
 {
     _modes.Push(_currentMode);
     _currentMode = mode;
 }
Example #24
0
		private void Reset()
		{
			_Modes = new Stack<LexMode>();
			_CurrentMode = LexMode.Text;
			_Modes.Push(_CurrentMode);

			_Line = 1;
			_Column = 1;
			_Pos = 0;
		}
Example #25
0
 void EnterMode(LexMode mode)
 {
     modes.Push(currentMode);
     currentMode = mode;
 }
Example #26
0
        private void Reset()
        {
            _modes = new Stack<LexMode>();
            _currentMode = LexMode.Text;
            _modes.Push(_currentMode);

            _line   = 1;
            _column = 1;
            _pos    = 0;
        }
 private void EnterMode(LexMode mode)
 {
     modes.Push(currentMode);
     currentMode = mode;
 }
Example #28
0
 private void LeaveMode()
 {
     _CurrentMode = _Modes.Pop();
 }
        private void Reset()
        {
            modes = new Stack<LexMode>();
            currentMode = LexMode.Text;
            modes.Push(currentMode);

            line = 1;
            column = 1;
            pos = 0;
        }
Example #30
0
 private void LeaveMode()
 {
     currentMode = (LexMode)modes.Pop();
 }