public void GetWellFormedValues_ShouldBehaveAsExpected(string input, string wellFormed) { // General var terminalLexerFactory = new TerminalLexerFactory(); var alternativeLexerFactory = new AlternativeLexerFactory(); var sequenceLexerFactory = new ConcatenationLexerFactory(); var repetitionLexerFactory = new RepetitionLexerFactory(); // SP var spaceLexerFactory = new SpaceLexerFactory(terminalLexerFactory); // HTAB var horizontalTabLexerFactory = new HorizontalTabLexerFactory(terminalLexerFactory); // WSP var whiteSpaceLexerFactory = new WhiteSpaceLexerFactory( spaceLexerFactory, horizontalTabLexerFactory, alternativeLexerFactory); // CR var carriageReturnLexerFactory = new CarriageReturnLexerFactory(terminalLexerFactory); // LF var lineFeedLexerFactory = new LineFeedLexerFactory(terminalLexerFactory); // CRLF var endOfLineLexerFactory = new EndOfLineLexerFactory( carriageReturnLexerFactory, lineFeedLexerFactory, sequenceLexerFactory); // LWSP var linearWhiteSpaceLexerFactory = new LinearWhiteSpaceLexerFactory( whiteSpaceLexerFactory, endOfLineLexerFactory, sequenceLexerFactory, alternativeLexerFactory, repetitionLexerFactory); var linearWhiteSpaceLexer = linearWhiteSpaceLexerFactory.Create(); using (var scanner = new TextScanner(new StringTextSource(input))) { var result = linearWhiteSpaceLexer.Read(scanner); Assert.NotNull(result); Assert.True(result.Success); Assert.NotNull(result.Element); Assert.Equal(wellFormed, result.Element.GetWellFormedText()); } }
public void ReadSuccess(string input) { // General var terminalLexerFactory = new TerminalLexerFactory(); var alternativeLexerFactory = new AlternativeLexerFactory(); var sequenceLexerFactory = new ConcatenationLexerFactory(); var repetitionLexerFactory = new RepetitionLexerFactory(); // SP var spaceLexerFactory = new SpaceLexerFactory(terminalLexerFactory); // HTAB var horizontalTabLexerFactory = new HorizontalTabLexerFactory(terminalLexerFactory); // WSP var whiteSpaceLexerFactory = new WhiteSpaceLexerFactory( spaceLexerFactory, horizontalTabLexerFactory, alternativeLexerFactory); // CR var carriageReturnLexerFactory = new CarriageReturnLexerFactory(terminalLexerFactory); // LF var lineFeedLexerFactory = new LineFeedLexerFactory(terminalLexerFactory); // CRLF var endOfLineLexerFactory = new EndOfLineLexerFactory( carriageReturnLexerFactory, lineFeedLexerFactory, sequenceLexerFactory); // LWSP var linearWhiteSpaceLexerFactory = new LinearWhiteSpaceLexerFactory( whiteSpaceLexerFactory, endOfLineLexerFactory, sequenceLexerFactory, alternativeLexerFactory, repetitionLexerFactory); var linearWhiteSpaceLexer = linearWhiteSpaceLexerFactory.Create(); using (var scanner = new TextScanner(new StringTextSource(input))) { var result = linearWhiteSpaceLexer.Read(scanner); Assert.NotNull(result); Assert.True(result.Success); Assert.NotNull(result.Element); Assert.Equal(input, result.Element.Text); } }
public ILexer <RequiredDelimitedList> Create(ILexer <Element> lexer) { var delim = TerminalLexerFactory.Create(@",", StringComparer.Ordinal); var ows = OptionalWhiteSpaceLexerFactory.Create(); var innerLexer = ConcatenationLexerFactory.Create( RepetitionLexerFactory.Create(ConcatenationLexerFactory.Create(delim, ows), 0, int.MaxValue), lexer, RepetitionLexerFactory.Create( ConcatenationLexerFactory.Create( ows, delim, OptionLexerFactory.Create(ConcatenationLexerFactory.Create(ows, lexer))), 0, int.MaxValue)); return(new RequiredDelimitedListLexer(innerLexer)); }