|   |   | 
| 
 | JFlex + CUP – генерация кода на 1С. Востребовано? | ☑ | ||||||
|---|---|---|---|---|---|---|---|---|
| 0
    
        quest 15.03.19✎ 14:29 | 
 
        Предположим, есть нашлепка к jflex и cup позволяющая генерировать код на 1С. Потребуется ли такое кому?     | |||||||
| 1
    
        Sysanin_1ц 15.03.19✎ 14:34 | 
        (0) Мне кажется такая нашлепка уже используется 1с чтобы нашлепать типовые конфигурации :))     Нет | |||||||
| 2
    
        H A D G E H O G s 15.03.19✎ 14:35 | 
        Предположим, 98% 1Сников не знает, что это такое.     | |||||||
| 3
    
        Garykom гуру 15.03.19✎ 14:36 | 
        (0) Допустим если б не генерировать а разбирать и выполнять код на языке 1С было бы полезно.
 Нечто вроде http://oscript.io/ только на java | |||||||
| 4
    
        Garykom гуру 15.03.19✎ 14:38 | 
        (3)+ Но только интерпретатор мало смысла голый, надо еще библиотеки писать базовые те что в 1С     | |||||||
| 5
    
        Сияющий в темноте 15.03.19✎ 14:42 | 
        Генератор кода-это мета язык,конечно,в определенных случаях это удобно,но,если механизм в конфигуратор не встроен,то с ним больше проблем,чем удобства.
 другое дело,что в 1с код не главное,а всякие там реквизиты-формы-шаблоны. | |||||||
| 6
    
        Сияющий в темноте 15.03.19✎ 14:45 | 
        (4) с учетом появления потоков и двоичных буферов язык вполне может рассматриваться отдельно от обьектов 1с,осталось дождаться появления сокетов и асинхронного HttpЗапроса.     | |||||||
| 7
    
        ДенисЧ 15.03.19✎ 14:45 | 
        Я не знаю этих слов. Поэтому мне не нужно     | |||||||
| 8
    
        elCust 15.03.19✎ 14:50 | 
        (7) +1     | |||||||
| 9
    
        Сияющий в темноте 15.03.19✎ 14:52 | 
        Опять же,все встроенные обьекты,создаваемые через новый хоть и встроенные,но к языку имеют достаточно опосредованное значение.
 если бы не GoTo,то код на языке 1с можно было бы переводить на VbScript или JavaScript. | |||||||
| 10
    
        Garykom гуру 15.03.19✎ 14:57 | 
        (9) В моем коде goto нет в принципе.
 В коде типовых конф тоже не встречал. | |||||||
| 11
    
        Вафель 15.03.19✎ 15:12 | 
        jflex - это парсер кода чтоли?. те ты парсер 1с прикрутил к jflex? | |||||||
| 12
    
        quest 15.03.19✎ 15:59 | 
        (2) Может быть. 
 (3) а смысл (7) учту (9) бред (11) jflex генератор лексических анализаторов , cup генератор синтаксических анализаторов. по грамматике можно сгенерировать код который будет по этим правилам разбирать входной поток. | |||||||
| 13
    
        Ботаник Гарден Меран 15.03.19✎ 16:11 | 
        Нужно генерировать код, который будет решать задачи.
 А если просто генерировать, то будет как у машинистки в анекдоте, а проверять и переписывать никто не хочет. | |||||||
| 14
    
        Cyberhawk 15.03.19✎ 16:23 | 
        Хз о чем речь, поэтому )     Нет | |||||||
| 15
    
        mikecool 15.03.19✎ 16:25 | 
        я не знаю ваших слов     Нет | |||||||
| 16
    
        Nyoko 15.03.19✎ 16:27 | 
        нет, делал такую задачу через oscript и выгрузку загрузку конфигурации в файлы 
 всем документам при открытии добавлял один код, всем справочникам другой. Нет | |||||||
| 17
    
        Patriot1C 15.03.19✎ 17:09 | 
        (0) JFlex is a lexical analyzer generator (also known as scanner generator) for Java, written in Java.
 Ты хотел сказать распознавать код 1С? | |||||||
| 18
    
        Patriot1C 15.03.19✎ 17:14 | 
        Поддержу человека, а то одиноко ему как то.
 Мы здесь кроме http://oscript.io/ плюшками балуемся на php http://php1c.ru Да | |||||||
| 19
    
        ptiz 15.03.19✎ 17:21 | 
        А помните Снегопат? Где он? Кто про него вспоминает?
 Все сторонние костыли - нежизнеспособны: много возни и мало эффекта. Нет | |||||||
| 20
    
        Sysanin_1ц 15.03.19✎ 17:33 | 
        (19) Снегопат уже сдулся. А все потому что 1с закрытая коробочка сама в себе и тратить время на интеграционные библиотеки на уровне платформы и прочую мудистику для 1с бессмысленно. Если открытостью платформы (я не имею ввиду интеграционные сервисы типа вебсервисов, одата, и тому подобное) не озаботилось само 1с то инвестировать в эту область сторонними силами вообще бессмысленно.     | |||||||
| 21
    
        Patriot1C 15.03.19✎ 17:53 | 
        (20) Как раз картинка почему Снегопат уже не помогает https://ibb.co/NL3cMms 
 Прогресс VS Иновации - https://youtu.be/NxuoKspbdkk?t=1309 | |||||||
| 22
    
        Вафель 15.03.19✎ 17:56 | 
        (20) Король умер. Да здравствует король     | |||||||
| 23
    
        Вафель 15.03.19✎ 17:56 | 
        (0) покажи пример задачи, котору можно решить     | |||||||
| 24
    
        quest 15.03.19✎ 18:01 | 
        (17) Рассказываю по другому. Предположим у вас стоит задача - реализовать свой калькулятор. Т.е. вы хотите что бы вызов ВычислитьВыражение("1+2") вам возвращала число 3, ВычислитьВыражение("1/0") возвращаол строку "Болт". Как это реализовать? Надо разобрать строку, преобразовать ее в поток токенов (для вызова ВычислитьВыражение("1+2") это будет массив структур примерно такого типа ("Тип,Значение","ЧИсло","1"), ("Тип,Значение","Плюс","+"), ("Тип,Значение","ЧИсло","2")) Писать разбор руками - дело неблагодарное, поэтому обычно исползуют специальные программы, которые по описанию генерируют модуль реализующий необходимый интерфейс и рассчитывается конечный автомат для сканера. Т.е. вместо того что бы руками писать разбор (и бороться с ошибками кода), можно нарисовать сканер просто описывая регулярные выражения. Лексер может быть любым, генерация делается на язык 1С. Другими словами - если ваш лексер написан что бы распознавать арифметическое выражение то в результате вы получаете обработку с одним экспортным методом getToken() который и возвращает результат разбора (те самые структуры ("Тип,Значение","ЧИсло","1")) 
 Аналогично работает cup - на входе описание грамматики - на выходе обработка с экспортным методом parse() - возвращает результат вычисления Менее сумбурно тут https://www.cs.auckland.ac.nz/courses/compsci330s1c/lectures/330ChaptersPDF/Chapt4.pdf | |||||||
| 25
    
        Вафель 15.03.19✎ 18:03 | 
        (24) трассировку вычисления можно будет увидеть. Например Хочу после вычисления знать значение x | |||||||
| 26
    
        quest 15.03.19✎ 18:03 | 
        ну и примеры использования - 
 https://github.com/jflex-de/jflex/tree/master/jflex/examples | |||||||
| 27
    
        Вафель 15.03.19✎ 18:04 | 
        (26) так это все в 1с и так уже есть, а вот трассировки нет     | |||||||
| 28
    
        quest 15.03.19✎ 18:04 | 
        (25) можно, при условии что ты опишешь сто такое х, как с ним работать и т.д.     | |||||||
| 29
    
        Вафель 15.03.19✎ 18:05 | 
        (28) что значит онишешь?. все описания - внутри кода. на выходе нужно знать всех промежуточных переменных | |||||||
| 30
    
        quest 15.03.19✎ 18:05 | 
        (27) в (24) сказано - ВычислитьВыражение("1/0") возвращаол строку "Болт"- а в 1С такой функциональности нет     | |||||||
| 31
    
        Вафель 15.03.19✎ 18:06 | 
        (30) ну исключение и в 1с кинется     | |||||||
| 32
    
        Sysanin_1ц 15.03.19✎ 18:07 | 
        (24) Так надо не нашлепки к языку 1с придумывать а делать сам язык 1с полноценным. С использованием наследований, трассировок, лямбда функций, и прочей атрибутикой взрослого языка программирования.     | |||||||
| 33
    
        quest 15.03.19✎ 18:09 | 
        (29) https://github.com/jflex-de/jflex/blob/master/jflex/examples/cup-lcalc/src/main/jflex/lcalc.flex лексер для арифметического выражения, https://github.com/jflex-de/jflex/blob/master/jflex/examples/cup-lcalc/src/main/cup/ycalc.cup парсер - как видно в этом калькуляторе вообще нет понятия переменной, поэтому и говорю - если добавить и описать поддержку переменных, то да можно будет сказать чему что равно, но если грамматика изначально не поддерживает такого понятия - то как считать?     | |||||||
| 34
    
        Вафель 15.03.19✎ 18:11 | 
        (33) можешь пример кода для задачи из (25) привести     | |||||||
| 35
    
        quest 15.03.19✎ 18:11 | 
        (32) Это не к языку 1с, 1с - просто целевая машина на которую описывается лексер и сканер (как lex генерирует код на С, paslex на паскале и т.д.). Результат работы - тупо 2 обработки и спокойные нервы при разработке dsl     | |||||||
| 36
    
        quest 15.03.19✎ 18:13 | 
        (34) нет. я примерно могу догадаться о чем ты (либо отладка, либо статический анализ), но это другие задчи. К генерации кода не имеют отношения     | |||||||
| 37
    
        Ник080808 15.03.19✎ 18:15 | 
        (32) назачем в 1с наследование? ты представляешь во что превратится код с наследованием в 1с?     | |||||||
| 38
    
        Вафель 15.03.19✎ 18:15 | 
        (36) тогда приведи пример задачи, котору можно решить. Не нужно кидать ссылки на мануалы | |||||||
| 39
    
        Patriot1C 15.03.19✎ 18:28 | 
        (35) Буду разочаровывать молодых товарищей. 
 Специфика 1С состоит в том, что она считает результат операции по типу первого аргумента. Если число то 1С второй аргумент переводит к числу (Результат = 1 + "01";) - работает. Если первый параметр строка то все остальное соединяется в строку (Результат = "01" + 1;) то специфика 1С в реализации даже базовых операторов. | |||||||
| 40
    
        quest 15.03.19✎ 18:28 | 
        (38)По lex. Смотри, у тебя есть файл в котором вперемешку символы из русского и греческого алфавита. Задача - выдать список греческих слов в файл1, список русских слов в файл2 
 Пишем простой лексер /// ///Тут реализация функции ВывестиВФайл /// (\p{Block:Greek})+ { ВывестиВФайл("файл1",text()) } (\p{Block:Cyrillic})+ { ВывестиВФайл("файл2",text()) } генерируем по нему обработку. Задача решена. По cup - реально лучше мануал прочесть. в двух словах не рассказать. | |||||||
| 41
    
        quest 15.03.19✎ 18:29 | 
        (39) это то здесь к чему?     | |||||||
| 42
    
        quest 15.03.19✎ 18:30 | 
        Всем участникам спасибо. То что не востребовано - стало ясно.     | |||||||
| 43
    
        Garykom гуру 15.03.19✎ 18:42 | 
        (42) Лично я не понял зачем "генерировать код на 1С"
 Нечто вроде https://ru.wikipedia.org/wiki/Haxe ? Дык http://yoksel.net.ru/haxe1s | |||||||
| 44
    
        quest 15.03.19✎ 19:50 | 
        Более узкая задача - представь ocamllex не на ocml генерирует код, а на 1С Только и всего.     | |||||||
| 45
    
        Sysanin_1ц 15.03.19✎ 20:22 | 
        (37) Код станет чище и меньше. Механизм расширения в 1с лишь это лишь небольшой пример что может сделать механизм наследования.     | |||||||
| 46
    
        Garykom гуру 15.03.19✎ 20:22 | 
        (44) В смысле можно взять код на некоем языке (например на pascal, c++, java) и преобразовать его в код на ЯП 1С ?
 Я реально не представляю нафига это надо, потому что оно будет дико не оптимально без использования встроенных в платформу 1С типов данных. | |||||||
| 47
    
        Patriot1C 15.03.19✎ 20:50 | 
        (46) Так я и пытаюсь втолковать товарищу, что 1С это не язык - это экосистема. Из которой можно что брать, а не в которую что-то впихивать     | |||||||
| 48
    
        Сияющий в темноте 15.03.19✎ 21:02 | 
        (46)опять же,если к транслятору подойти с умом,то получится достаточно терпимо.
 просто,например,код с той же java просто так не перевести,т.к.java без классов не бывает. 1с скриптоподобный язык и на другие такие же языки в принципе переводится,например,в тот же всеми любимый php можно перевести,а если потом еще через comconnector подключиться к базе 1с,то будет работать. | |||||||
| 49
    
        v77 15.03.19✎ 22:28 | 
        (46) В смысле автор придумал способ генерировать парсеры и лексеры на языке 1с. Будешь нажимать на кнопку и получать готовый код на языке 1с, который, например, распарсит тебе какой нибудь текст. Можешь теперь написать на 1с компилятор Си.
 Может заканать как решение проблемы с отсутствием регулярных выражений в 1с. Да | |||||||
| 50
    
        v77 15.03.19✎ 22:34 | 
        Правда разбираться с этим JFlex никто не будет. Ибо одинесники получают свои деньги совсем за другое.     | |||||||
| 51
    
        Garykom гуру 15.03.19✎ 22:44 | 
        (49) Реализация регулярок на языке 1С это лютый ахтунг по быстродействию же.     | |||||||
| 52
    
        bolder 15.03.19✎ 22:48 | 
        (2) +1     | |||||||
| 53
    
        v77 15.03.19✎ 22:48 | 
        (51) зато на родном языке 1с и без всяких фокусов     | |||||||
| 54
    
        quest 15.03.19✎ 23:08 | 
        (49) +100500.... Я так понимаю ты из тех 2% о которых ежик говорил в (2)
 (51) Нормальный это ахтунг.. Лучше чем всякие СтрНайти, ОбработатьСтрокиЭмуляцияRegExp и прочие радости - по крайней мере точно знаешь что ожидать и в какие сроки | |||||||
| 55
    
        v77 15.03.19✎ 23:17 | 
        (54) напиши статью на инфостарте. с примерчиком     | |||||||
| 56
    
        Garykom гуру 15.03.19✎ 23:21 | 
        Хмм подумалось а можно ли это допилить не до простейшего транслятора из одного языка в другой а нечто более.
 Ну вот скажем есть мечтающие о полноценном ООП. Ваяем некое расширения языка 1С с наличием оного (классов и прочего), далее пишем на нем код (причем с использованием доступа к метаданным как обычно на 1С) а затем оно превращается в нативный код 1С. Этакий "Выполнить()" или "Вычислить()", только на вход подаются набор файлов-классов. | |||||||
| 57
    
        Garykom гуру 15.03.19✎ 23:23 | 
        (56) Ближе всего это как Scala и Java или Kotlin и JS     | |||||||
| 58
    
        v77 15.03.19✎ 23:30 | 
        (56)задолбаешься отлаживать этот свой сгенерированый чудо-код     | |||||||
| 59
    
        Garykom гуру 15.03.19✎ 23:31 | 
        (58) Да это основная проблема почему я бросил скалу )) И даже не стал браться за котлин.     | |||||||
| 60
    
        Сергиус 15.03.19✎ 23:39 | 
        Сержиньо с нетом не что-то подобное предлагал?     | |||||||
| 61
    
        v77 15.03.19✎ 23:39 | 
        (59) Котлин же вроде сам по себе язык. Там с отладкой вроде всё нормально. А скалу ты бросил потому что она тебе нах не нужна, как и котлин :)) Одинеснику зачем эти погремушки. За них деньги не платят.     | |||||||
| 62
    
        v77 15.03.19✎ 23:40 | 
        (60) чота он пропал. за ум взялся чтоли     | |||||||
| 63
    
        Garykom гуру 15.03.19✎ 23:48 | 
        (60) Неа он просто предлагал объекты/классы/типы .Net юзать в готовом виде, вызывая их через свою обертку Ъ в виде ВК для 1С.
 Это далеко от предложенного ТС. Но при совмещении можно было бы получить офуительный результат. Когда пишем на нативном языке 1С со слитным/нативным использованием допустим .Net, а не так как там извращенно. А после натравливания получается готовое с нужными вставками нужных вызовов через ВК. | |||||||
| 64
    
        Garykom гуру 15.03.19✎ 23:49 | 
        (61) Ну я когда скалу бросил был программером на яве для десктопа считай. И осваивал EE с JSP заодно.     | |||||||
| 65
    
        Garykom гуру 15.03.19✎ 23:53 | 
        (64)+ Кстати опыт предыдущий опыт на 1С весьма помогал в написании, вместо того чтобы каждый раз пилить формочки с нуля, я тогда нечто вроде форм по умолчанию как в 1С (для справочников и документов) придумал и реализовал.
 С возможностью допиливания до как надо. Т.е. если наследоваться от нужного класса то сразу появлялись и работали как нуна элементы по умолчанию для "формы списка" и "формы объекта". Поиск по подстроке (в форме списка) понятно дело был в отдельном контроле (куда искомая строка вводилась), как это 1С уже в УФ пришлось сделать. | |||||||
| 66
    
        Aleksey 16.03.19✎ 01:14 | 
        (10) у тебя устаревшие данные. Советую ознакомиться к примеру с отчетом РегламентированныйОтчетПрибыльИностраннойОрганизации из типовой БП 3.0 или ERP. Там этих goto (перейти) можно 24 штуки найти     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |