|
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
|
|||||||||||||||||||||
1C 8.x Парсер в 1С. Глава 1. Критикуйте22.11.2014, 21:23. Показов 12286. Ответов 59
Метки нет (Все метки)
У каждого действия которое мы делаем – есть мотивация. Мотивацией для этой статьи было желание увидеть продолжение статьи http://infostart.ru/public/239061/. Продал год, подвижек нет, вспомнил вечное «Хочешь сделать хорошо – сделай это сам». Как и предыдущий докладчик я пообещаю вам что к концу этой статьи вы сможете написать свой парсер текста запроса. Тем более ничего сложного в этом нет.
Если вы уже читали «Yacc is dead» (http://arxiv.org/abs/1010.5023) то можете не читать дальше, перейти к комментам, написать кг/ам и перейти к следующей публикации. Для всех остальных – в первой части статьи - небольшой экскурс в теорию. Что такое парсер в контексте «Matching with derivatives»? Как и на любой другой вопрос в computer since – правильный ответ – функция. Но не любая, а удовлетворяющая следующим условиям 1. Функция разбора пустой строки всегда возвращает истину 2. Функция принимает 2 аргумента – символ для проверки и строку 3. В случае если первый символ в строке для разбора совпадает с символолм для проверки, то функция возвращает остаток строки, исключив первый символ 4. Если 1 символ не совпадает с символом для проверки, то функция возвращает входящую строку Рассмотрим примитивный парсер, разбирающий строку «а»
Нет ничего проще
L -> «мама» | «папа». Простой вариант решения –
Но, как быть, если наша грамматика будет представлена в виде L-> («м»| «п») «а» («м»| «п») «а» Можно попытаться описать функцию разбора так
1
|
|||||||||||||||||||||
| 22.11.2014, 21:23 | |
|
Ответы с готовыми решениями:
59
Парсер в 1С. Глава 2. Критикуйте критикуйте мой сайт Оцените сбору, критикуйте, предлагайте |
|
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
|
|
| 01.12.2014, 17:46 [ТС] | |
|
что он из себя представляет сам знаю
как никак 6 лет за клюшками просидел. Собирать грамматику просто лень
0
|
|
|
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 11
|
|
| 02.12.2014, 10:55 | |
|
Проверки принадлежности символа набору символов нет.
0
|
|
|
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
|
|
| 02.12.2014, 10:59 [ТС] | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 11
|
|
| 02.12.2014, 11:16 | |
|
{Id Ch Standard} = {Alphanumeric} + [_]
{Id Ch Extended} = {Printable} - ['['] - [']'] Id = ({Letter}{Id Ch Standard}* | '['{Id Ch Extended}+']') ('.'({Letter}{Id Ch Standard}* | '['{Id Ch Extended}+']'))? {Id Ch Standard} - получается не диапазон символов, а набор. Добавлено через 4 минуты Форматирование меняется в статье. То блоки строк разделяются пустыми строками, то нет. Лучше разделять. Сплошной текст читать можно но не комфортно. Субъективно конечно.
0
|
|
|
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
|
|
| 02.12.2014, 11:24 [ТС] | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 11
|
|
| 02.12.2014, 11:43 | |
|
ОперацияВыбор подходит для проверки вхождения символа в набор.
0
|
|
|
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
|
||||||||||||||||
| 02.12.2014, 11:52 [ТС] | ||||||||||||||||
|
Подходит, но будет медленно. Более правильно оформить парсер отдельно.
Так будет работать быстрее нежели
1
|
||||||||||||||||
|
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
|
|
| 03.12.2014, 13:51 [ТС] | |
|
http://infostart.ru/public/316338/ начало
Следующая часть уже в новом году. Подумал над предложением akabrr - парситься будет текст запроса для 7.7 - это и логичней, и проще
0
|
|
|
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
|
|
| 03.12.2014, 21:04 [ТС] | |
|
Зато простой язык и сразу понятно как со всем этим работать
0
|
|
|
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
|
|
| 18.12.2014, 22:49 [ТС] | |
|
начало второй части - https://github.com/wwall/report-1.git
если не используете git то link на zip - https://github.com/wwall/repor... master.zip Как и прежде - нужны отзывы, поиск неточностей и нелогичностей. Рекомендации по стилю.
1
|
|
|
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 11
|
|
| 19.12.2014, 17:08 | |
|
Мало
. Читается легко. Спасибо. У вас талант.
0
|
|
|
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
|
||
| 19.12.2014, 21:09 [ТС] | ||
|
да теперь стараюсь проще писать. Один из отзывов на предыдущую статью был что слишком мудренно и не понятно о чем (правда та девушка была, и начинающая).
Не по теме: Доброе слово и одинэснику приятно.
0
|
||
|
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
|
|
| 23.12.2014, 19:51 [ТС] | |
|
Немного продолжения. Брать можно по ссылкам
https://www.cyberforum.ru/redi... N0ZXIuemlw либо https://www.cyberforum.ru/redi... QtMS5naXQ= Как обычно - жду критику и предложение. ЗЫ. Просьба к модерам - снесите все в 1 первом сообщении и оставьте там эти ссылки - что бы народ не путался.
0
|
|
|
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 11
|
|
| 24.12.2014, 09:22 | |
|
Функция РезультатВЧисло(значение)
ЦелаяЧасть = МассивВСтроку(значение(значение)[0]); ДробнаяЧасть = ""; Если Не значение(значение)[1] = Неопределено Тогда ДробнаяЧасть = МассивВСтроку(значение(значение)[1][1]); Конецесли; Возврат Число(ЦелаяЧасть+"."+ДробнаяЧасть); Конецфункции Лишние пустые строки Добавлено через 5 минут Как видим -строка вполне корректно разбирвается на символы и группируется по нетерминалам. Не пробела после - . Добавлено через 57 секунд В коде это выглядит так digits = ПостроитьПарсер("+",ПостроитьПарсер("ran ge",Новый Структура("Минимум,Максимум","0","9"))); На примере теста видно как строить и вызывать парсер : То используется : то нет. Добавлено через 2 минуты Чем править текст? Я бы сразу в репозиторий залил.
0
|
|
|
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
|
|
| 24.12.2014, 09:36 [ТС] | |
|
Текст в drracket правлю. Файлы с расшриением scrbl.
Если лень его запускать - то можешь править в любоv удобном редакторе, после чего выполнять вызов make.bat - будет происходить пересборка.
0
|
|
|
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 11
|
|
| 24.12.2014, 10:56 | |
|
В DrRacket не видно лишних пустых строк. Интересно. Некорректно обрабатывает правила?
Добавлено через 30 секунд @1C{ Функция РезультатВЧисло(значение) ЦелаяЧасть = МассивВСтроку(значение(значение)[0]); ДробнаяЧасть = ""; Если не значение(значение)[1] = Неопределено Тогда ДробнаяЧасть = МассивВСтроку(значение(значение)[1][1]); КонецЕсли; Возврат Число(ЦелаяЧасть+"."+ДробнаяЧасть); КонецФункции}
0
|
|
|
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
|
|
| 24.12.2014, 10:59 [ТС] | |
|
Не. Сразу поправил после твоего сообщения утром и перезалил.
0
|
|
|
0 / 0 / 0
Регистрация: 17.04.2019
Сообщений: 2
|
|
| 23.04.2020, 15:57 | |
|
wwall, подскажите так сделал кто нибудь готовую обработку? Готов купить
0
|
|
|
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
|
|
| 23.04.2020, 16:14 [ТС] | |
|
Не по теме: Фигасе ты некромант По делу https://github.com/1c-syntax/bsl-language-server - java https://github.com/lead-tools/bsparser - 1C ну и мое недоделаное https://gitlab.com/wwall/styleguide В телеграмме коференции https://github.com/lead-tools https://t.me/bsl_language_server
0
|
|
| 23.04.2020, 16:14 | |
|
Критикуйте код. Очень надо Стоит брать это Пк или по критикуйте конфигу Глава Microsoft Шлее, глава 40 Лафоре. Глава 11. Задача 2 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|