| 123456789101112131415161718192021222324252627282930313233343536 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Text.RegularExpressions;
- namespace Larkdown.Parser.Lexer
- {
- class LineStartState : State
- {
- public override State Next(Lexer lexer)
- {
- var indent = lexer.Read(new Regex("^[\t ]*"));
- if (indent.Length > 0)
- {
- lexer.Emit(new Token(TokenType.Indentation, indent));
- }
- if (lexer.IsEof())
- {
- lexer.Emit(new Token(TokenType.Eof));
- return null;
- }
- switch (lexer.Peek())
- {
- case '\n':
- lexer.Emit(new Token(TokenType.Empty));
- lexer.Read();
- return this;
- default:
- return new TextState();
- }
- }
- }
- }
|