예제 #1
0
        public LexicalModeContext(LexicalMode start)
        {
            modes = new Stack <LexicalMode>(3);

            this.Current = start;

            modes.Push(start);
        }
예제 #2
0
파일: LexicalMode.cs 프로젝트: carbon/Css
        public void Leave(LexicalMode mode, CssTokenizer tokenizer = null)
        {
            if (current != mode) throw new UnexpectedModeChange(current, mode, (tokenizer == null) ? 0 : tokenizer.Current.Position);

            modes.Pop();

            current = modes.Peek();
        }
예제 #3
0
        public CssToken Consume(TokenKind expect, LexicalMode mode)
        {
            if (Current.Kind != expect)
            {
                throw new UnexpectedTokenException(mode, expect, Current);
            }

            return(Consume());
        }
예제 #4
0
파일: CssParser.cs 프로젝트: carbon/Css
        public CssToken Read(TokenKind expect, LexicalMode mode)
        {
            if (current.Kind != expect)
            {
                throw new UnexpectedTokenException(mode, expect, current);
            }

            return Read();
        }
예제 #5
0
파일: CssTokenizer.cs 프로젝트: carbon/Css
        public CssTokenizer(SourceReader reader, LexicalMode mode = LexicalMode.Selector)
        {
            this.reader = reader;

            this.reader.Next(); // Start the reader

            this.mode = new LexicalModeContext(mode);

            this.Next(); // Load the first token
        }
예제 #6
0
        public void Leave(LexicalMode mode, int position = 0)
        {
            if (Current != mode)
            {
                throw new UnexpectedModeChange(Current, mode, position);
            }

            modes.Pop();

            Current = modes.Peek();
        }
예제 #7
0
        public CssTokenizer(SourceReader reader, LexicalMode mode = LexicalMode.Selector)
        {
            this.reader = reader;

            this.reader.Next(); // Start the reader

            this.mode = new LexicalModeContext(mode);

            this.stack = new Stack <CssToken>(3);
            current    = default;
            isEnd      = false;

            this.Next(); // Load the first token
        }
예제 #8
0
        public void Enter(LexicalMode mode)
        {
            modes.Push(mode);

            Current = mode;
        }
예제 #9
0
 public UnexpectedTokenException(LexicalMode mode, CssToken token)
     : base($"Unexpected token reading {mode}. Was '{token.Kind}'.")
 {
     Token = token;
 }
예제 #10
0
 public UnexpectedTokenException(LexicalMode mode, TokenKind expectedKind, CssToken token)
     : base($"Unexpected token at {token.Position} reading {mode}. Expected '{expectedKind}'. Was '{token.Kind}'.", token.Position)
 {
     Token = token;
 }
예제 #11
0
        // "Current mode is:" + current + ". Leaving " + mode + "."

        public UnexpectedModeChange(LexicalMode currentMode, LexicalMode leavingMode, int position)
            : base($"Unexpected mode change. Expected '{leavingMode}'. Was {currentMode}.", position)
        {
        }
예제 #12
0
 public UnexpectedTokenException(LexicalMode mode, CssToken token)
     : base($"Unexpected token reading {mode}. Was '{token.Kind}'.")
 {
     this.token = token;
 }
예제 #13
0
 // "Current mode is:" + current + ". Leaving " + mode + "."
 public UnbalancedBlock(LexicalMode currentMode, CssToken startToken)
     : base("The block is unclosed, '}' expected", startToken.Position)
 {
 }
예제 #14
0
 public UnexpectedTokenException(LexicalMode mode, TokenKind expectedKind, CssToken token)
     : base($"Unexpected token at {token.Position} reading {mode}. Expected '{expectedKind}'. Was '{token.Kind}'.", token.Position)
 {
     this.token = token;
 }
예제 #15
0
파일: LexicalMode.cs 프로젝트: carbon/Css
        public void Enter(LexicalMode mode)
        {
            modes.Push(mode);

            current = mode;
        }
예제 #16
0
파일: LexicalMode.cs 프로젝트: carbon/Css
        public LexicalModeContext(LexicalMode start)
        {
            this.current = start;

            modes.Push(start);
        }
예제 #17
0
        // "Current mode is:" + current + ". Leaving " + mode + "."

        public UnbalancedBlock(LexicalMode currentMode, CssToken startToken)
            : base("The block is unclosed, '}' expected", startToken.Position)
        {
        }
예제 #18
0
 public UnexpectedModeChange(LexicalMode currentMode, LexicalMode leavingMode, int position)
     : base($"Unexpected mode change. Expected {currentMode}. Was {leavingMode}.")
 {
     this.position = position;
 }