Вход | Регистрация
 

JFlex + CUP – генерация кода на 1С. Востребовано?

JFlex + CUP – генерация кода на 1С.  Востребовано?
Я
   quest
 
15.03.19 - 14:29
2. Нет71% (5)
1. Да29% (2)
Всего мнений: 7

Предположим, есть нашлепка к jflex и cup позволяющая генерировать код на 1С. Потребуется ли такое кому?
 
 
   Sysanin_1ц
 
1 - 15.03.19 - 14:34
(0) Мне кажется такая нашлепка уже используется 1с чтобы нашлепать типовые конфигурации :))

2. Нет
   H A D G E H O G s
 
2 - 15.03.19 - 14:35
Предположим, 98% 1Сников не знает, что это такое.
   Garykom
 
3 - 15.03.19 - 14:36
(0) Допустим если б не генерировать а разбирать и выполнять код на языке 1С было бы полезно.
Нечто вроде http://oscript.io/ только на java
   Garykom
 
4 - 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
Я не знаю этих слов. Поэтому мне не нужно
   elCust
 
8 - 15.03.19 - 14:50
(7) +1
   Сияющий в темноте
 
9 - 15.03.19 - 14:52
Опять же,все встроенные обьекты,создаваемые через новый хоть и встроенные,но к языку имеют достаточно опосредованное значение.

если бы не GoTo,то код на языке 1с можно было бы переводить на VbScript или JavaScript.
   Garykom
 
10 - 15.03.19 - 14:57
(9) В моем коде goto нет в принципе.
В коде типовых конф тоже не встречал.
   Вафель
 
11 - 15.03.19 - 15:12
jflex - это парсер кода чтоли?.
те ты парсер 1с прикрутил к jflex?
   quest
 
12 - 15.03.19 - 15:59
(2) Может быть.
(3) а смысл
(7) учту
(9) бред
(11) jflex генератор лексических анализаторов , cup генератор синтаксических анализаторов. по грамматике можно сгенерировать код который будет по этим правилам разбирать входной поток.
   Ботаник Гарден Меран
 
13 - 15.03.19 - 16:11
Нужно генерировать код, который будет решать задачи.
А если просто генерировать, то будет как у машинистки в анекдоте, а проверять и переписывать никто не хочет.
   Cyberhawk
 
14 - 15.03.19 - 16:23
Хз о чем речь, поэтому )

2. Нет
   mikecool
 
15 - 15.03.19 - 16:25
я не знаю ваших слов

2. Нет
   Nyoko
 
16 - 15.03.19 - 16:27
нет, делал такую задачу через oscript и выгрузку загрузку конфигурации в файлы
всем документам при открытии добавлял один код, всем справочникам другой.

2. Нет
   Patriot1C
 
17 - 15.03.19 - 17:09
(0) JFlex is a lexical analyzer generator (also known as scanner generator) for Java, written in Java.
Ты хотел сказать распознавать код 1С?
   Patriot1C
 
18 - 15.03.19 - 17:14
Поддержу человека, а то одиноко ему как то.
Мы здесь кроме http://oscript.io/ плюшками балуемся на php http://php1c.ru

1. Да
   ptiz
 
19 - 15.03.19 - 17:21
А помните Снегопат? Где он? Кто про него вспоминает?
Все сторонние костыли - нежизнеспособны: много возни и мало эффекта.

2. Нет
   Sysanin_1ц
 
20 - 15.03.19 - 17:33
(19) Снегопат уже сдулся. А все потому что 1с закрытая коробочка сама в себе и тратить время на интеграционные библиотеки на уровне платформы и прочую мудистику для 1с бессмысленно. Если открытостью платформы (я не имею ввиду интеграционные сервисы типа вебсервисов, одата, и тому подобное) не озаботилось само 1с то инвестировать в эту область сторонними силами вообще бессмысленно.
   Patriot1C
 
21 - 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) покажи пример задачи, котору можно решить
   quest
 
24 - 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 = 2+ 3;
y = x * 2;

Хочу после вычисления знать значение x
   quest
 
26 - 15.03.19 - 18:03
ну и примеры использования - 
https://github.com/jflex-de/jflex/tree/master/jflex/examples
   Вафель
 
27 - 15.03.19 - 18:04
(26) так это все в 1с и так уже есть, а вот трассировки нет
   quest
 
28 - 15.03.19 - 18:04
(25) можно, при условии что ты опишешь сто такое х, как с ним работать и т.д.
   Вафель
 
29 - 15.03.19 - 18:05
(28) что значит онишешь?.
все описания - внутри кода. на выходе нужно знать всех промежуточных переменных
   quest
 
30 - 15.03.19 - 18:05
(27) в (24) сказано - ВычислитьВыражение("1/0") возвращаол строку "Болт"- а в 1С такой функциональности нет
 
 
   Вафель
 
31 - 15.03.19 - 18:06
(30) ну исключение и в 1с кинется
   Sysanin_1ц
 
32 - 15.03.19 - 18:07
(24) Так надо не нашлепки к языку 1с придумывать а делать сам язык 1с полноценным. С использованием наследований, трассировок, лямбда функций, и прочей атрибутикой взрослого языка программирования.
   quest
 
33 - 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) привести
   quest
 
35 - 15.03.19 - 18:11
(32) Это не к языку 1с, 1с - просто целевая машина на которую описывается лексер и сканер (как lex генерирует код на С, paslex на паскале и т.д.). Результат работы - тупо 2 обработки и спокойные нервы при разработке dsl
   quest
 
36 - 15.03.19 - 18:13
(34) нет. я примерно могу догадаться о чем ты (либо отладка, либо статический анализ), но это другие задчи. К генерации кода не имеют отношения
   Ник080808
 
37 - 15.03.19 - 18:15
(32) назачем в 1с наследование? ты представляешь во что превратится код с наследованием в 1с?
   Вафель
 
38 - 15.03.19 - 18:15
(36) тогда приведи пример задачи, котору можно решить.
Не нужно кидать ссылки на мануалы
   Patriot1C
 
39 - 15.03.19 - 18:28
(35) Буду разочаровывать молодых товарищей.
Специфика 1С состоит в том, что она считает результат операции по типу первого аргумента. Если число то 1С второй аргумент переводит к числу (Результат = 1 + "01";) - работает. Если первый параметр строка то все остальное соединяется в строку (Результат = "01" + 1;) то специфика 1С в реализации даже базовых операторов.
   quest
 
40 - 15.03.19 - 18:28
(38)По lex. Смотри, у тебя есть файл в котором вперемешку символы из русского и греческого алфавита. Задача - выдать список греческих слов в файл1, список русских слов в файл2
Пишем простой лексер 
///

//Тут реализация функции ВывестиВФайл

//


(\p{Block:Greek})+ { ВывестиВФайл("файл1",text()) }
(\p{Block:Cyrillic})+ { ВывестиВФайл("файл2",text()) }

генерируем по нему обработку. Задача решена. 

По cup - реально лучше мануал прочесть. в двух словах не рассказать.
   quest
 
41 - 15.03.19 - 18:29
(39) это то здесь к чему?
   quest
 
42 - 15.03.19 - 18:30
Всем участникам спасибо. То что не востребовано - стало ясно.
   Garykom
 
43 - 15.03.19 - 18:42
(42) Лично я не понял зачем "генерировать код на 1С"

Нечто вроде https://ru.wikipedia.org/wiki/Haxe ?

Дык http://yoksel.net.ru/haxe1s
   quest
 
44 - 15.03.19 - 19:50
Более узкая задача - представь ocamllex не на ocml генерирует код, а на 1С Только и всего.
   Sysanin_1ц
 
45 - 15.03.19 - 20:22
(37) Код станет чище и меньше. Механизм расширения в 1с лишь это лишь небольшой пример что может сделать механизм наследования.
   Garykom
 
46 - 15.03.19 - 20:22
(44) В смысле можно взять код на некоем языке (например на pascal, c++, java) и преобразовать его в код на ЯП 1С ?

Я реально не представляю нафига это надо, потому что оно будет дико не оптимально без использования встроенных в платформу 1С типов данных.
   Patriot1C
 
47 - 15.03.19 - 20:50
(46) Так я и пытаюсь втолковать товарищу, что 1С это не язык - это экосистема. Из которой можно что брать, а не в которую что-то впихивать
   Сияющий в темноте
 
48 - 15.03.19 - 21:02
(46)опять же,если к транслятору подойти с умом,то получится достаточно терпимо.
просто,например,код с той же java просто так не перевести,т.к.java без классов не бывает.
1с скриптоподобный язык и на другие такие же языки в принципе переводится,например,в тот же всеми любимый php можно перевести,а если потом еще через comconnector подключиться к базе 1с,то будет работать.
   v77
 
49 - 15.03.19 - 22:28
(46) В смысле автор придумал способ генерировать парсеры и лексеры на языке 1с. Будешь нажимать на кнопку и получать готовый код на языке 1с, который, например, распарсит тебе какой нибудь текст. Можешь теперь написать на 1с компилятор Си.
Может заканать как решение проблемы с отсутствием регулярных выражений в 1с.

1. Да
   v77
 
50 - 15.03.19 - 22:34
Правда разбираться с этим JFlex никто не будет. Ибо одинесники получают свои деньги совсем за другое.
   Garykom
 
51 - 15.03.19 - 22:44
(49) Реализация регулярок на языке 1С это лютый ахтунг по быстродействию же.
   bolder
 
52 - 15.03.19 - 22:48
(2) +1
   v77
 
53 - 15.03.19 - 22:48
(51) зато на родном языке 1с и без всяких фокусов
   quest
 
54 - 15.03.19 - 23:08
(49) +100500.... Я так понимаю ты из тех 2% о которых ежик говорил в (2)
(51) Нормальный это ахтунг.. Лучше чем всякие СтрНайти, ОбработатьСтрокиЭмуляцияRegExp и прочие радости - по крайней мере точно знаешь что ожидать и в какие сроки
   v77
 
55 - 15.03.19 - 23:17
(54) напиши статью на инфостарте. с примерчиком
   Garykom
 
56 - 15.03.19 - 23:21
Хмм подумалось а можно ли это допилить не до простейшего транслятора из одного языка в другой а нечто более.

Ну вот скажем есть мечтающие о полноценном ООП. Ваяем некое расширения языка 1С с наличием оного (классов и прочего), далее пишем на нем код (причем с использованием доступа к метаданным как обычно на 1С) а затем оно превращается в нативный код 1С.

Этакий "Выполнить()" или "Вычислить()", только на вход подаются набор файлов-классов.
   Garykom
 
57 - 15.03.19 - 23:23
(56) Ближе всего это как Scala и Java или Kotlin и JS
   v77
 
58 - 15.03.19 - 23:30
(56)задолбаешься отлаживать этот свой сгенерированый чудо-код
   Garykom
 
59 - 15.03.19 - 23:31
(58) Да это основная проблема почему я бросил скалу )) И даже не стал браться за котлин.
   Сергиус
 
60 - 15.03.19 - 23:39
Сержиньо с нетом не что-то подобное предлагал?
   v77
 
61 - 15.03.19 - 23:39
(59) Котлин же вроде сам по себе язык. Там с отладкой вроде всё нормально. А скалу ты бросил потому что она тебе нах не нужна, как и котлин :)) Одинеснику зачем эти погремушки. За них деньги не платят.
   v77
 
62 - 15.03.19 - 23:40
(60) чота он пропал. за ум взялся чтоли
   Garykom
 
63 - 15.03.19 - 23:48
(60) Неа он просто предлагал объекты/классы/типы .Net юзать в готовом виде, вызывая их через свою обертку Ъ в виде ВК для 1С.
Это далеко от предложенного ТС.

Но при совмещении можно было бы получить офуительный результат.

Когда пишем на нативном языке 1С со слитным/нативным использованием допустим .Net, а не так как там извращенно.
А после натравливания получается готовое с нужными вставками нужных вызовов через ВК.
   Garykom
 
64 - 15.03.19 - 23:49
(61) Ну я когда скалу бросил был программером на яве для десктопа считай. И осваивал EE с JSP заодно.
   Garykom
 
65 - 15.03.19 - 23:53
(64)+ Кстати опыт предыдущий опыт на 1С весьма помогал в написании, вместо того чтобы каждый раз пилить формочки с нуля, я тогда нечто вроде форм по умолчанию как в 1С (для справочников и документов) придумал и реализовал.
С возможностью допиливания до как надо.

Т.е. если наследоваться от нужного класса то сразу появлялись и работали как нуна элементы по умолчанию для "формы списка" и "формы объекта".
Поиск по подстроке (в форме списка) понятно дело был в отдельном контроле (куда искомая строка вводилась), как это 1С уже в УФ пришлось сделать.
   Aleksey
 
66 - 16.03.19 - 01:14
(10) у тебя устаревшие данные. Советую ознакомиться к примеру с отчетом РегламентированныйОтчетПрибыльИностраннойОрганизации из типовой БП 3.0 или ERP. Там этих goto (перейти) можно 24 штуки найти
 
 Рекламное место пустует


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.