🗊 Презентация Использование парсер-комбинаторов на Sprache для построения DSL

Нажмите для полного просмотра!
Использование парсер-комбинаторов на Sprache для построения DSL, слайд №1 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №2 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №3 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №4 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №5 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №6 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №7 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №8 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №9 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №10 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №11 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №12 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №13 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №14 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №15 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №16 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №17 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №18 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №19 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №20 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №21 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №22 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №23 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №24 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №25 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №26 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №27 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №28 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №29 Использование парсер-комбинаторов на Sprache для построения DSL, слайд №30

Содержание

Вы можете ознакомиться и скачать презентацию на тему Использование парсер-комбинаторов на Sprache для построения DSL. Доклад-сообщение содержит 30 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Использование парсер-комбинаторов на Sprache Евгений Романовский
Описание слайда:
Использование парсер-комбинаторов на Sprache Евгений Романовский

Слайд 2


Задача «Восстановить» объект из строки Шаблонизатор с подстановкой переменных
Описание слайда:
Задача «Восстановить» объект из строки Шаблонизатор с подстановкой переменных

Слайд 3


Подходы к решению
Описание слайда:
Подходы к решению

Слайд 4


1. Парсеры, написанные вручную Подходят, когда решение очевидно (Split, IndexOf, Substring) public class SecurityToken { public string UserId { get;...
Описание слайда:
1. Парсеры, написанные вручную Подходят, когда решение очевидно (Split, IndexOf, Substring) public class SecurityToken { public string UserId { get; set; } public DateTime ValidTo { get; set; } } Нужно распарсить строку "8cb9f238-e0e4-431c-86a6-9ac52b9cb6b9;2017-04-20T00:00:00Z"

Слайд 5


2. Регулярные выражения Относительно простая грамматика в простых случаях Трудно читать и поддерживать Невозможно работать с вложенными данными Не...
Описание слайда:
2. Регулярные выражения Относительно простая грамматика в простых случаях Трудно читать и поддерживать Невозможно работать с вложенными данными Не масштабируется на более сложные грамматики

Слайд 6


3. Генераторы парсеров Генерирует классы на целевом языке (Java, C#, …) во время сборки проекта, которые способные разбирать грамматику Требует...
Описание слайда:
3. Генераторы парсеров Генерирует классы на целевом языке (Java, C#, …) во время сборки проекта, которые способные разбирать грамматику Требует времени для изучения и интеграции Подходит для очень сложных вещей, где важна скорость разбора ANTLR (

Слайд 7


3. Генераторы парсеров (ANTLR) grammar Speak; /* Parser Rules */ chat : line line EOF ; line : name SAYS word NEWLINE; name : WORD ; word : WORD ; /*...
Описание слайда:
3. Генераторы парсеров (ANTLR) grammar Speak; /* Parser Rules */ chat : line line EOF ; line : name SAYS word NEWLINE; name : WORD ; word : WORD ; /* Lexer Rules */ fragment A : ('A'|'a') ; fragment S : ('S'|'s') ; fragment Y : ('Y'|'y') ; fragment LOWERCASE : [a-z] ; fragment UPPERCASE : [A-Z] ; SAYS : S A Y S ; WORD : (LOWERCASE | UPPERCASE)+ ; WHITESPACE : (' '|'\t')+ -> skip ; NEWLINE : ('\r'? '\n' | '\r')+ ;

Слайд 8


4. Парсер-комбинаторы Мини-язык описания Логика написана на том же языке, что и остальное приложение (C#) Техника пришла из функциональных языков
Описание слайда:
4. Парсер-комбинаторы Мини-язык описания Логика написана на том же языке, что и остальное приложение (C#) Техника пришла из функциональных языков

Слайд 9


Sprache - C# Parser Framework Легко писать Легко поддерживать Хорошо сочетается с TDD Маленький размер библиотеки
Описание слайда:
Sprache - C# Parser Framework Легко писать Легко поддерживать Хорошо сочетается с TDD Маленький размер библиотеки

Слайд 10


Parser public delegate IResult Parser(IInput input); public interface IResult { T Value { get; } bool WasSuccessful { get; } IInput Remainder { get;...
Описание слайда:
Parser public delegate IResult Parser(IInput input); public interface IResult { T Value { get; } bool WasSuccessful { get; } IInput Remainder { get; } }

Слайд 11


Primitive parsers Parse.Char('
Описание слайда:
Primitive parsers Parse.Char('

Слайд 12


Parsers and combinators - Sequence
Описание слайда:
Parsers and combinators - Sequence

Слайд 13


Parsers and combinators - Or
Описание слайда:
Parsers and combinators - Or

Слайд 14


Parsers and combinators - Optional
Описание слайда:
Parsers and combinators - Optional

Слайд 15


Parsers and combinators - Many
Описание слайда:
Parsers and combinators - Many

Слайд 16


Строим свои парсеры Parser identifier = from leading in Parse.WhiteSpace.Many() from first in Parse.Letter.Once() from rest in...
Описание слайда:
Строим свои парсеры Parser identifier = from leading in Parse.WhiteSpace.Many() from first in Parse.Letter.Once() from rest in Parse.LetterOrDigit.Many() from trailing in Parse.WhiteSpace.Many() select new string(first.Concat(rest).ToArray()); var id = identifier.Parse(" abc123 "); Assert.AreEqual("abc123", id);

Слайд 17


Off-topic: Select, SelectMany, Where C# public static IEnumerable Select(this IEnumerable source, Func selector) public static IEnumerable...
Описание слайда:
Off-topic: Select, SelectMany, Where C# public static IEnumerable Select(this IEnumerable source, Func selector) public static IEnumerable SelectMany(this IEnumerable parser, Func selector, Func projector) public static IEnumerable Where(this IEnumerable source, Func predicate)

Слайд 18


Off-topic: Select, SelectMany, Where C# public static Parser Select(this Parser parser, Func convert) public static Parser SelectMany(this Parser...
Описание слайда:
Off-topic: Select, SelectMany, Where C# public static Parser Select(this Parser parser, Func convert) public static Parser SelectMany(this Parser parser, Func selector, Func projector) public static Parser Where(this Parser parser, Func predicate)

Слайд 19


Примеры задач
Описание слайда:
Примеры задач

Слайд 20


1. Парсинг из текста public class Person { public Person(…) { Type = type; Properties = properties; } public string Type { get; } public IEnumerable...
Описание слайда:
1. Парсинг из текста public class Person { public Person(…) { Type = type; Properties = properties; } public string Type { get; } public IEnumerable Properties { get; } }

Слайд 21


1. Парсинг из текста magician [ name ‘Merlin’ age 100500 ]
Описание слайда:
1. Парсинг из текста magician [ name ‘Merlin’ age 100500 ]

Слайд 22


Demo 1 (парсинг из текста)
Описание слайда:
Demo 1 (парсинг из текста)

Слайд 23


2. Шаблонизатор var props = new Dictionary { {"Number", "MX-123"}, {"Date", new DateTime(2017, 04, 19)},...
Описание слайда:
2. Шаблонизатор var props = new Dictionary { {"Number", "MX-123"}, {"Date", new DateTime(2017, 04, 19)}, {"Caption", "Счет"} }; string template = "{{Caption}} №{{Number}} от {{Date}}"; "Счет №MX-123 от 19.04.17"

Слайд 24


Demo 2 (шаблонизатор)
Описание слайда:
Demo 2 (шаблонизатор)

Слайд 25


3. WWW-Authenticate challenge HTTP 401 Unauthorized # Basic challenge WWW-Authenticate: Basic realm="FooCorp" # OAuth 2.0 challenge after...
Описание слайда:
3. WWW-Authenticate challenge HTTP 401 Unauthorized # Basic challenge WWW-Authenticate: Basic realm="FooCorp" # OAuth 2.0 challenge after sending an expired token WWW-Authenticate: Bearer realm="FooCorp", error=invalid_token, error_description="The access token has expired"

Слайд 26


3. WWW-Authenticate challenge # from RFC-2617 (HTTP Basic and Digest authentication) challenge = auth-scheme 1*SP 1#auth-param auth-scheme = token...
Описание слайда:
3. WWW-Authenticate challenge # from RFC-2617 (HTTP Basic and Digest authentication) challenge = auth-scheme 1*SP 1#auth-param auth-scheme = token auth-param = token "=" ( token | quoted-string ) # from RFC2616 (HTTP/1.1) token = 1* separators = "(" | ")" | "" | "@" | "," | ";" | ":" | "\" | *(qdtext | quoted-pair ) > quoted-pair = "\" CHAR

Слайд 27


Demo 3 (WWW-Authenticate challenge)
Описание слайда:
Demo 3 (WWW-Authenticate challenge)

Слайд 28


Автор библиотеки Nicholas Blumhardt Контрибьютор других известных библиотек
Описание слайда:
Автор библиотеки Nicholas Blumhardt Контрибьютор других известных библиотек

Слайд 29


Парсеры, построенные на Sprache
Описание слайда:
Парсеры, построенные на Sprache

Слайд 30


Евгений Романовский Евгений Романовский
Описание слайда:
Евгений Романовский Евгений Романовский



Похожие презентации
Mypresentation.ru
Загрузить презентацию