дурацкие размышления
Jan. 4th, 2017 10:30 pmесть у меня одно чудо инженерной мысли. Чудо бежит на jvm 1.7 ( на самом деле 1.8 но фичи 8ки не допускаются при сборке)
если микро задачка которую уже сделанна в лоб но оно часто попадается на глаза и муляет как говорят в Одессе
нужно реализовать разбор простого выражения
выглядит оно примерно так:
SomeFreakingMagicShit|parameter_1=123|parameter_2=345|optional_parameter=890
Первое слово определят action которое мы хотим совершить, дальше через пайпы идут параметры которые могут быть как обязательные так и опциональные.
У каждого action наборы параметров разные, их довольно таки много
Хочется не упырьский способ получить на выходе объект по которому будет сразу понятно валидное ли выражение ( да, наверно надо что то типа maybe monad только какое то дурацкое) и какой то вменяемый способ описывать имеющиеся actions тоже
Выражения пишут люди руками во внешней пердуле, по этому просто наконструировать их исходно типобезопасно и все заранее проверить в компайл тайме не покататит.
Чешется еще притулить к этому groovy или какой еще другой скриптинг, хз, не было еще времени подумать на тему перегона этого в такую плоскость
Есть сильное ощущение что это можно сделать
- хорошо
- красиво
Но мозги не работают...
если микро задачка которую уже сделанна в лоб но оно часто попадается на глаза и муляет как говорят в Одессе
нужно реализовать разбор простого выражения
выглядит оно примерно так:
SomeFreakingMagicShit|parameter_1=123|parameter_2=345|optional_parameter=890
Первое слово определят action которое мы хотим совершить, дальше через пайпы идут параметры которые могут быть как обязательные так и опциональные.
У каждого action наборы параметров разные, их довольно таки много
Хочется не упырьский способ получить на выходе объект по которому будет сразу понятно валидное ли выражение ( да, наверно надо что то типа maybe monad только какое то дурацкое) и какой то вменяемый способ описывать имеющиеся actions тоже
Выражения пишут люди руками во внешней пердуле, по этому просто наконструировать их исходно типобезопасно и все заранее проверить в компайл тайме не покататит.
Чешется еще притулить к этому groovy или какой еще другой скриптинг, хз, не было еще времени подумать на тему перегона этого в такую плоскость
Есть сильное ощущение что это можно сделать
- хорошо
- красиво
Но мозги не работают...
no subject
Date: 2017-01-08 07:59 pm (UTC)https://github.com/jon-hanson/parsecj
для 1.7 можно попробовать вот это
http://www.functionaljava.org/javadoc/4.6/functionaljava/fj/parser/package-summary.html
no subject
Date: 2017-01-08 08:02 pm (UTC)no subject
Date: 2017-01-08 08:15 pm (UTC)http://www.staff.science.uu.nl/~dijks106/Papers/pcjava-mpool2001.pdf
"Lazy Functional Parser Combinators in Java"
другие хорошие парсеры
https://github.com/sirthias/parboiled/wiki
http://www.antlr.org
http://www.cs.nyu.edu/rgrimm/xtc/
http://www.romanredz.se/Mouse/index.htm
no subject
Date: 2017-01-08 08:19 pm (UTC)http://jeval.sourceforge.net/
до сих пор не понял мотивации человека который это притащил в проект...
no subject
Date: 2017-01-08 08:47 pm (UTC)http://www.transylvania-jug.org/archives/5777
https://github.com/scireum/parsii
no subject
Date: 2017-01-08 08:58 pm (UTC)no subject
Date: 2017-01-08 08:59 pm (UTC)no subject
Date: 2017-01-08 09:02 pm (UTC)https://github.com/sirthias/parboiled/wiki
я правда сам использовал только parboiled2 - он только для скалы, но впечатления хорошие ... )
no subject
Date: 2017-01-08 09:22 pm (UTC)Я очень сильно проржал с бенчмарка, это просто отлично. С коллегой сейчас аж подвывали как две гиены
дали мне козырную карту для гонений на это поделие, скачаю бенчмарки пощупать результаты руками