Содержание
- 2. «Восстановить» объект из строки Шаблонизатор с подстановкой переменных Задача
- 3. Подходы к решению
- 4. Подходят, когда решение очевидно (Split, IndexOf, Substring) public class SecurityToken { public string UserId { get;
- 5. Относительно простая грамматика в простых случаях Трудно читать и поддерживать Невозможно работать с вложенными данными Не
- 6. Генерирует классы на целевом языке (Java, C#, …) во время сборки проекта, которые способные разбирать грамматику
- 7. grammar Speak; /* Parser Rules */ chat : line line EOF ; line : name SAYS
- 8. Мини-язык описания Логика написана на том же языке, что и остальное приложение (C#) Техника пришла из
- 9. Легко писать Легко поддерживать Хорошо сочетается с TDD Маленький размер библиотеки https://github.com/sprache/Sprache Sprache - C# Parser
- 10. public delegate IResult Parser (IInput input); public interface IResult { T Value { get; } bool
- 11. Parse.Char(' Parse.Digit Parse.WhiteSpace Parse.Numeric Parse.AnyChar Parse.LineEnd Parse.LetterOrDigit … Primitive parsers
- 12. Parsers and combinators - Sequence in AB success failure from letter in Parse.Letter from digit in
- 13. Parsers and combinators - Or in A or B success failure from letter in Parse.Letter.Or(Parse.Digit)
- 14. Parsers and combinators - Optional in A? success failure from letter in Parse.Letter.Optional()
- 15. Parsers and combinators - Many in A* success failure from letters in Parse.Letter.Many()
- 16. Parser identifier = from leading in Parse.WhiteSpace.Many() from first in Parse.Letter.Once() from rest in Parse.LetterOrDigit.Many() from
- 17. public static IEnumerable Select (this IEnumerable source, Func selector) public static IEnumerable SelectMany (this IEnumerable parser,
- 18. public static Parser Select (this Parser parser, Func convert) public static Parser SelectMany (this Parser parser,
- 19. Примеры задач
- 20. 1. Парсинг из текста public class Person { public Person(…) { Type = type; Properties =
- 21. magician [ name ‘Merlin’ age 100500 ] 1. Парсинг из текста
- 22. Demo 1 (парсинг из текста)
- 23. var props = new Dictionary { {"Number", "MX-123"}, {"Date", new DateTime(2017, 04, 19)}, {"Caption", "Счет"} };
- 24. Demo 2 (шаблонизатор)
- 25. 3. WWW-Authenticate challenge HTTP 401 Unauthorized # Basic challenge WWW-Authenticate: Basic realm="FooCorp" # OAuth 2.0 challenge
- 26. 3. WWW-Authenticate challenge # from RFC-2617 (HTTP Basic and Digest authentication) challenge = auth-scheme 1*SP 1#auth-param
- 27. Demo 3 (WWW-Authenticate challenge)
- 28. Автор библиотеки Nicholas Blumhardt Контрибьютор других известных библиотек Serilog Stateless Autofac …
- 29. Парсеры, построенные на Sprache The template parser in Octostache The XAML binding expression parser in OmniXaml
- 31. Скачать презентацию