gifts2017

[1C-to-EXE] Компилятор 1С кода

Опубликовал Василий Демидов (Душелов) в раздел Программирование - Практика программирования

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

  Но начало положено...

Обсуждение компилятора и всего связанного с ним в группе: http://infostart.ru/community/groups/36/

 

*** Для компиляции потребуется установленный Microsoft .NET Framework 3.5.

*** Для работы скомпилированного кода потребуется установленный Microsoft .NET Framework 2.0.

Для компиляции требуется обязательно присутствие процедуры "ПриОткрытии()" - в качестве точки входа в программу.

Возможности:

  - разбор процедур и их параметров
  - разбор функций, параметров и возвращаемого значения
  - циклы "Для Из" и "Для Каждого"
  - переменные модуля
  - списки значений (пока только "Добавить", "Получить" и "Значение")
  - булево
  - условия
 

Консольное приложение:
 
Для передачи параметров в начале кода нужно задать формат параметров в виде комментария:

  // КоманднаяСтрока
  // <Имя параметра>;<Тип параметра>;<Описание параметра>
  // КонецКоманднойСтроки

  Каждый новый параметр должен начинаться с новой строки.
  Типы параметров: Число, Строка, Булево.

История:

31.12.2008:

 - добавлена возможность компилирования в консольное приложения с передачей параметров

 30.12.2008:

 - Булево

 - Условия

26.12.2008:

 Первая версия

  - разбор процедур и их параметров
  - разбор функций, параметров и возвращаемого значения
  - циклы "Для Из" и "Для Каждого"
  - переменные модуля
  - списки значений (пока только "Добавить", "Получить" и "Значение")

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Текущая версия
.1234944635 62,30Kb
25.09.09
415
.1234944635 62,30Kb 415 Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Василий Демидов (Душелов) 26.12.08 11:58
Попытка реализации компилятора ;)
dreadlord; German; +2 Ответить
2. Василий Демидов (Душелов) 26.12.08 12:08
Проверка синтаксиса поверхностная, пока не заморачивался, как и все остальное, так что ошибки вполне могут выскакиват и в "рабочем" коде ;)
3. Евгений Мартыненков (JohnyDeath) 26.12.08 12:09
Василий, а где это можно применить?
4. Василий Демидов (Душелов) 26.12.08 12:11
(3) Пока нигде ;) Как вариант далее - разбор того же epf-а, генерирование формы (уже windows-приложение, а не консольное), отработку событий. Ну и, теоретически, работа с данными в sql-ном режиме ;) Предварительно, структуру метаданных получив.
5. Аркадий Кучер (Abadonna) 26.12.08 12:12
(3) по секрету... в оконцове должен стать КЗК-8 ;)
divam; shouh; +2 Ответить 1
6. Василий Демидов (Душелов) 26.12.08 12:12
+4 ну ипользовать можно будет, когда работу с файлами добавлю - возможность писать на 1С-е небольшие утилитки, по обработке файлов :) с компиляцией в самостоятельные приложения.
7. Василий Демидов (Душелов) 26.12.08 12:13
8. Герман (German) 26.12.08 12:18
Однозначно революционная вещь
9. Герман (German) 26.12.08 12:23
Лучше бы генерил ВК(dll), exe то никуда не пришьешь.
10. Василий Демидов (Душелов) 26.12.08 12:24
(9) Да это не сложно ;) В планах это реализовать.
11. Nikita (nikstinger) 26.12.08 12:28
Цитата с Bash.org.ru:
MerryMaker: Смотрю рекламу VoIP-провайдера: "Просто подключите стационарный телефон к интернет-шлюзу, и звоните без ограничений".
MerryMaker: 10 лет назад я выходил в инет через телефон, а не наоборот...

и гланды удалять можно через ж*** только зачем?!... неужели С++, Делфи да того же Бейсика для работы с файлами, SQL и прочего не хватает?
12. Василий Демидов (Душелов) 26.12.08 12:29
(11) Не поверишь! Мне - хватает. Я цели преследую совершенно другие.
nikstinger; +1 Ответить
13. Nikita (nikstinger) 26.12.08 12:32
=) тогда не вопрос) за идею однозначно +!
14. Олег Пономаренко (O-Planet) 26.12.08 12:38
(9) И будет Golden Key...

А вообще, весчь не нужная имхо. Серьезный компилятор требует много мороки, функционал восьмерки достаточно обширен. А это - игрушка, не более. Списки и таблицы значений - это семечки. Вот когда встанет вопрос о привязки к метаданным, о транзакциях и разделении прав, то все и заглохнет, скорее всего. Лучше предложить нечто принципиально новое, как блокнот, в котором молжно еще и программировать. Как вариант - можно не парсить самому код 1С, а включить в состав dll от 1С, где это делается. Просто проработать вывод на экран альтернативный.
15. Василий Демидов (Душелов) 26.12.08 12:42
(14) А каков принцип работы гкея? Полноценное конвертирование кода 1С в язык высокого уровня или просто прятание модуля в глубь библиотеки?
16. Олег Пономаренко (O-Planet) 26.12.08 12:49
Первое - КЗК. У меня - второе. Скажем, есть Ном=СоздатьОбъект("Справочник.Номенклатура"); Я в модуле заменяю на Ном=GK(2313);
17. Василий Демидов (Душелов) 26.12.08 12:53
(16) Ну в целом понятно... Я полностью конвертирую код 1С в язык ВУ ;)
А заглохнет или нет - посмотрим :)
19. Олег Пономаренко (O-Planet) 26.12.08 12:58
(17) Если добьешь это до рабочей версии, то покруче разных формекс будет. Но работа - не на один месяц. Возможно, на годы. Стоит вспомнить, сколько разрабатывается любая новая 1С, и сколько чел. в этом принимает участие. ТЫ готов к этому? :)
20. Василий Демидов (Душелов) 26.12.08 13:02
(19) Я знаю, сколько человек разрабатывает платформу, и ты будешь удивлен этому количеству ;))
Я понимаю, что это работа не на 2 недели... Понемногу, постепенно... :)
21. Сhe Burashka (CheBurator) 26.12.08 13:03
не взлетит.. просто по опыту других разработок аналогичных еще для 7-ки... тогда было бы уже лучше сделать автономную среду разработки, которая бы заменила типовой конфигуратор 1С-ки...
Оболтус; +1 Ответить 1
22. Василий Демидов (Душелов) 26.12.08 13:04
(14) А на счет блокнотика я подумаю... Мой дебаггерский вариант примерно напоминает этот блокнотик ;)
23. Василий Демидов (Душелов) 26.12.08 13:04
(21) Я тоже думал на счет этой темы...
24. Олег Пономаренко (O-Planet) 26.12.08 13:05
(20) Я не говорю о кодерах только. Их, как правило, не больше 2-х ))
25. Сергей (seermak) 26.12.08 13:05
(20) а сколько (для общего развидия:))
26. Василий Демидов (Душелов) 26.12.08 13:07
(24) Ну давай ориентироваться на кодеров ;)
(25) в (24) примерно угадал... Хотя сейчас, ситуация, конечно может быть другая... С учетом появления 8.2.
27. Андрей Скляров (coder1cv8) 26.12.08 13:10
Прикольная игрушка! Душелов радует как обычно! ) Жирный плюс!
Но как я и говорил на форуме это возможно, но не реально. Написание полноценного компилятора любой обработки в EXE сопоставимо по трудозатратам с переписыванием всей платформы с нуля. Одному человеку это не по силам, даже если это Душелов! ))
28. Максим (Fuego) 26.12.08 13:12
Ставлю плюсик за одержимость идеей! :)) Молодчик! Чё сказать?.. :)
29. Василий Демидов (Душелов) 26.12.08 13:13
(27) Я знаю, что одному не под силу... Но никто и не говорит, что я буду один ;)
Идея есть. Возможность реализации в принципе есть... А там посмотрим :)
30. Владимир (vovan519) 26.12.08 13:14
(0) плюс
(19) Не грузи Душелова. У него есть то, что теряют большенство программистов с возрастом. Это азарт и вдохновение. Те, кто хоть раз ощущал ЭТО, когда наплевать на деньги, на сон, на еду, когда не думаешь о том что получится или нет, когда не думаешь о признании, думаю поймут меня.
В общем Душелов красавчег.
Knych; agrustny; Leja; Styvi; angeliccare; const000; larisab; GSoft; JohnyDeath; +9 Ответить 3
31. Олег Пономаренко (O-Planet) 26.12.08 13:16
(26) Не угадал, а знаю, потому что участвовал в разработках ПО (конечно, не 1С) Просто тянуть команду из более трех программеров, на самом деле, очень затратно: такие проекты требуют хорошей организации. Просто на каждого дополнительного программера требуется несколько менеджеров. На это тратится будет только Билл Гейтс. У нас рассуждают примерно так: "Какой отдел ПО?! Мы вон сейчас Шурику, сыну главбухши, дадим, он за месяц все напишет, лишь бы ему курсовую зачли".
32. Олег Пономаренко (O-Planet) 26.12.08 13:21
(30) Ха. Мне не говори про потерю азарта и вдохновения. "С возрастом" оно лишь прибавилось. Но появилось и еще одно немаловажное качество: умение рассчитывать затраты. Потом, я не говорю, что проект обречен. Просто он очень затратен. Тут на одном вдохновение и азарте не выедешь. Все это исчезает при пятой, десятой, двадцатой серьезной затыке. Начинаются разговоры о нехватке времени, о глобальных катаклизмах и т.д. Кстати, кто-нибудь скажет, как поживает проект "Апельсин"?..
33. Андрей Скляров (coder1cv8) 26.12.08 13:22
(29) А как ты собираешься реализовать работу с БД? Для такого компилятора жизненно необходимо ориентироваться именно на файловую базу (*.1CD) я считаю! А если тебе по силам организовать такое взаимодействие, то стоит не об этих игрушках, а о серьезных вещах задуматься!!! Например, альтернативный "клиент" для файловой базы. )
34. Василий Демидов (Душелов) 26.12.08 13:23
(33) С sql-ной версией в целом все понятно, а вот с файловой - тут уже надо ждать других специалистов, которые смогут разобрать этот файл.
35. Олег Пономаренко (O-Planet) 26.12.08 13:24
(33) Это - как раз не вопрос. Можно пристегнуть любую имеющуюся.
36. Василий Демидов (Душелов) 26.12.08 13:24
(32) Затраты кроме моеги личного времени... Я просто люблю программировать и изучать что-то новое :) И не я один... И с годами эта страсть все сильнее и сильнее... :)))
37. Василий Демидов (Душелов) 26.12.08 13:26
Может к теме вернемся? Кто-нибудь уже посмотрел? Попробовали что-нибудь набросать простенькое?
38. Олег Пономаренко (O-Planet) 26.12.08 13:27
(33) Хм... Не сразу вьехал... А зачем 1CD не является защищенной авторским правом? Т.е. можно с ней работать вне платформы? Может, лучше собственную структуру данных иметь для собственного проекта?
39. Василий Демидов (Душелов) 26.12.08 13:28
А, забыл сказать, что для компилации требуется обязательно присутствие процелуры "ПриОткрытии()" - в качестве точки входа в программу.
40. Андрей Скляров (coder1cv8) 26.12.08 13:29
(34) В том-то и дело, что такой инструмент имеет смысл только для файловой базы! Зачем чё-то компилировать под SQL-ную базу, если проще написать приложение непосредственно работающее с таблицами???
(35) Не согласен.
41. Андрей Скляров (coder1cv8) 26.12.08 13:31
(38) Вот с авторскими правами косячек, я думаю, будет! )
42. o.nikolaev.infostart (o.nikolaev) 26.12.08 13:34
43. АЛьФ (АЛьФ) 26.12.08 13:46
Совет: чтобы не париться с синтаксисом и разбором кода, можно конвертить не исходник, а р-код, который 1С генерит при поставке без исходников. ИМХО так будет и в реализации проще, и надежней.
44. Василий Демидов (Душелов) 26.12.08 13:48
(43) Спасибо за совет, поковыряюсь!..
45. Сhe Burashka (CheBurator) 26.12.08 13:52
(30) > Те, кто хоть раз ощущал ЭТО, когда наплевать на деньги, на сон, на еду, когда не думаешь о том что получится или нет, когда не думаешь о признании, думаю поймут меня.
..да! это знакомое состояние... только вот семья как-то не сильно приветсвует...
GSoft; German; +2 Ответить 1
46. Василий Демидов (Душелов) 26.12.08 13:55
(45) Жена сама из-за ноутбука или книжек не вылазит - ей удобнее, хоть от меня отвлечься можно, своими делами заняться :)))
47. Сhe Burashka (CheBurator) 26.12.08 14:06
(46) Я рад за тебя! это тебе с женой повезло! ;-)
48. LenaTorpeda 26.12.08 14:34
Качаю что попало.Зачем, к чему это приложить? Может потом пойму:)
Учусь,одним словом :)
49. Михаил Усков (MMF) 26.12.08 14:40
Вот когда реализуешь работу с прикладными объектами вот тогда это будет ОГОГО. А пока что фигня какая-то
50. Василий Демидов (Душелов) 26.12.08 14:44
Вообщем, все новости и прочее, буду постить тут: http://infostart.ru/community/groups/36/
51. Сhe Burashka (CheBurator) 26.12.08 14:50
(48) угумс.. у меня тоже асяким барахлом род терабайт забито...
52. Роман Петров (PeRom) 26.12.08 15:00
Молодец Василий! Ой не зря всё это затеяно - главное не результат, а динамика!
53. Алексей Коробов (WiseSnake) 26.12.08 15:35
Если честно не понимаю за что плюсы?
Мож кто объяснит темному?
Не проще на языке высокого уровня сразу программу написать?
Этот компилятор даже к рукаву не пришьешь...
Базу 1С он умеет использовать?
Отчет на нем самый простецкий можно сконвертить?
А для того чтобы написать рабочий exe или dll надо практически туже платформу 1С написать только сбоку...
Темный я какой то...
54. Яков Коган (Yashazz) 26.12.08 15:40
Если не заглохнет, то... То это волшебно и революционно! Наконец-то можно будет писать независимые приложения, как в нормальной среде и языке разработки! Спасибо за подвижничество и героизм.
Мечтал о таком, но сам никогда б не взялся...
55. Олег Пономаренко (O-Planet) 26.12.08 15:59
56. Алексей Коробов (WiseSnake) 26.12.08 16:02
Ставлю 100 евров на то что загнется :)))))
Если Василий напишет работающую вещь то этих денег будет не жалко!!!!!!!!!!!!!
57. Андрей (andrewalexk) 26.12.08 16:04
(0)
:)
а вот интересно..
получится сгенерить файл монополия.epf?
58. Василий Демидов (Душелов) 26.12.08 16:05
(56) Загнется на каком этапе? ;)
(57) Это что? Игрушка что ли?
59. Сhe Burashka (CheBurator) 26.12.08 16:11
Если Василий напишет автономную среду разработки, поддерживающую работу в полном (или почти полном) объеме с md и +платформу исполнения (или в экзешник или как сейчас 1ска - по выбору разработчика) - то и мне, вообщем-то 100 евро не жалко...
60. Алексей Коробов (WiseSnake) 26.12.08 16:15
(58) Это сложный вопрос... я вообще то думал что это шутка ;), но фиг его знает слово не воробей...
Например дается пол года.
Если будет возможность exeшнику обращатся с базой (чтение, запись) хотя бы по основным объектам метаданных использовать глобальные процедуры общих модулей. То я признаю поражение.
61. Василий Демидов (Душелов) 26.12.08 16:17
(60) Запись в бд - это вряд ли (самое трудное)... А вот хотя бы на чтение.... ;)
62. Василий Демидов (Душелов) 26.12.08 16:19
(59) Один я этого не напишу, тут помощники нужны...

- Ты за сколько времени карету починить сможешь?
- За два месяца
- А за три?
- Могу и за три
- А за шесть сможешь?
- Ну коли постараться и за шесть смогу
- А за год?
- Ну за год - это сложно, тут помощники нужны!
Пр: А за два?...
Стр: ...
63. Андрей Зайцев (zaic) 26.12.08 16:21
56. У него как-то сразу получаются работающие вещи ..). Мастер он.
Интересно, как это будет по размеру, надобность в кзк2 отпадет или как, получится ли коммерческий продукт и т.д. Во всяком случае хочется пожелать успехов в этом проекте.
64. Сhe Burashka (CheBurator) 26.12.08 16:23
65. Алексей Коробов (WiseSnake) 26.12.08 16:25
(62) И я о том же...
+ Как к бесплатному(он же планируется бесплатный) аналогу отнесутся 1С, возможны палки в колеса, в этом я уверен.
Это реальный свободный проект типа openoffis.
Это круто и тут нужна серьезная организация действий...
Ищи единомышленников... Я бы помог, но знаю языки ВУ не на том уровне который здесь необходим... Возможно со временем ;)
66. Алексей Коробов (WiseSnake) 26.12.08 16:26
(63) zaic вещь то неработающая, не разделяю оптимизма, пока это только баловство
67. Алексей Коробов (WiseSnake) 26.12.08 16:37
Мне больше интересно, как у тебя, Василий, получается так "завести" людей, вызвать всеобщий психоз :)???
Поделись секретом ;)
68. Василий Демидов (Душелов) 26.12.08 16:39
69. Василий Демидов (Душелов) 26.12.08 16:39
Я просто реализовываю мечты, когда был чистым одинэсником... Хотелось этого, того и еще вот этого... А сейчас просто занялся реализацией ;)
70. Алексей Коробов (WiseSnake) 26.12.08 17:07
Я так примерно и объяснил себе происходящее... Плюсуют мечты... ))))
Как сам то оцениваешь судьбу разработки? Как думаешь насколько тебя хватит?
71. Василий Демидов (Душелов) 26.12.08 17:11
(70) Как минимум - базовые возможности платформы- работа с файлами, xml, дбф, с инетом и прочее - что не зависит от конфигурации и данным можно будет в xml хранить.

К чему стремиться - разбор обработок(модуль и форму), разбор конфигурации и чтение из SQL - это все вполне реально.
72. AmoreMe (AmoreMe) 26.12.08 17:28
Есть просьба выложить (тестовый).exe файл... Сдается мне, что даже в первом приближении компиляцией это назвать нельзя?! Если это DotNet то там предварительная компиляция в MSIL, а это увы не то же самое, что машинный код! Хотя посмотрим дизассемблером видно будет. Сам "скомпилить" не могу по тех. причинам! Да странное конечно желание у автора возникло... (Это всё равно, что назад на дерево:) Собственно не компилятор это думаю к интерпретаторам ближе, ну поправьте если что! А... автор ведь на шарпе пишет?! Ну так можно не смотреть там компиляция на стадии выполнения идет как и в Бэйсике.NET теперь...
73. Василий Демидов (Душелов) 26.12.08 17:35
(72) Так понятно же, что нужен .Net. ;)
А почему странное желание то?
Можно назвать и интерпретатором, хотя микрософт за компиляцию считает. :)
75. Андрей (andrewalexk) 26.12.08 17:43
(58)
:)
ну да
монополька
с анимацией
никаких чтений из БД
тем более записи...
поиском можно найти..
76. AmoreMe (AmoreMe) 26.12.08 17:44
Компиляция это необратимый процесс перевода текста программы в машинный код... Байт - код как и на Яве не то! Окончательная компиляция на стадии выполнения идет. Именно поэтому некоторые части программы могут быть не скомпилированы совсем(За ненадобностью)! Странно потому, что надо наоборот подниматься по лестницы абстракции выше, тенденция такая вроде нынче! Или я не прав?
77. Василий Демидов (Душелов) 26.12.08 17:54
(76) Как бы спорить об определениях не вижу смысла :)
Кому интересно, могут почитать http://ru.wikipedia.org/wiki/Компиляция_(программирование)

А что в целом-то не устраивает? :)
78. Василий Демидов (Душелов) 26.12.08 17:56
79. Аркадий Кучер (Abadonna) 26.12.08 17:58
(48)>Может потом пойму:)
Размечталась...
80. AmoreMe (AmoreMe) 26.12.08 17:59
Почему не утраивает? Устраивает всё... Истину ищем! Про компиляцию.
81. AmoreMe (AmoreMe) 26.12.08 18:00
Привет Abadonna! Старая школа с нами?! Что про компиляцию то думаешь?
82. Василий Демидов (Душелов) 26.12.08 18:01
(80) Ага, а 1С - язык программирования, и программисты 1С - программисты ;)
Тем для холиваров полно :)))
83. Андрей (andrewalexk) 26.12.08 18:04
84. Аркадий Кучер (Abadonna) 26.12.08 18:16
(81)>Старая школа с нами?!
Открою секретик ;) Нет ни старой, ни новой. Я инженер-механик, специалист по динамике и прочности машин и механизмов, большой любитель сопромата. Серьезно
85. Olga Olga (olga1974) 26.12.08 18:18
(84)хорошо,что не компроматов!!
86. AmoreMe (AmoreMe) 26.12.08 18:20
Да это не важно кто в какой садик ходил... Главное все здесь собрались... И любители сопро и просто мата... Правда иных уж нет , а те уже далече!
87. AmoreMe (AmoreMe) 26.12.08 18:21
88. Аркадий Кучер (Abadonna) 26.12.08 18:21
(85) И ты ошиблась :))))))) Я ж не Гений 1С, а просто гений. Одинаково хорош во всех областях :))))) (Фиксин, это не в твой огород, просто каламбур)
89. Аркадий Кучер (Abadonna) 26.12.08 18:23
У меня комп сгорел сегодня (один из трех, но основной), вот я и хохмлю, что б не плакать ;)
90. Василий Демидов (Душелов) 26.12.08 19:19
91. Иван Берездецкий (berezdetsky) 26.12.08 19:22
(73) MSIL именно компилируется и именно в машинный код - при первом запуске на клиентской машине. Со всей возможной для данной конкретной машины оптимизацией.
92. Василий Демидов (Душелов) 26.12.08 19:27
93. GSoft. (GSoft) 26.12.08 20:20
идея хорошая +1
по крайней мере вижу вот такой вариант использования - компилим отчет, который ставим менеждеру(оператору... нужное подчеркнуть) не имеющещему необходимости в использования всей базы, а только конкретного отчета и вуаля
94. AmoreMe (AmoreMe) 26.12.08 20:47
(91) Ну а я о чём? Только не весь он компилируется, это было бы слишком тормозно, в том и фишка! А "настоящий" экзешник скажем из С или Асма уже в "байтиках" скомпилен тоесть и весь... Чуете разницу?
95. AmoreMe (AmoreMe) 26.12.08 20:51
Ну опять же оптимизация хоть и является неотемлемой частью современных оптимизирующих компиляторов (Intel C++ компилер мне очень нравится) но всё же кодер то тоже не лаптем щи хлебает... И может как помочь ему так и забить на это дело просто удалив дебажную инфу!
96. AmoreMe (AmoreMe) 26.12.08 21:03
Кстати предлагаю автору сместить акцент в сторону метапрограммирования, мне кажется будет интересней. На одном языке высокого уровня пишем программу которая генерирует программы на другом языке... И может ещё что то! Ну так в качестве фантазий.
97. Василий Демидов (Душелов) 26.12.08 21:06
(96) А чем 1С не устраивает? :)
98. AmoreMe (AmoreMe) 26.12.08 21:11
Так вроде я его и имел ввиду... Просто компиляции тут нет (Простите за занудство).
99. AmoreMe (AmoreMe) 26.12.08 21:15
Ну как по другому назвать я не знаю. Может засовываем метаданные в ехе файл, хотя их там и от шарпа достаточно... Если писать защитный механизм, ну в проекции конечно... То тоже подход не стого угла! Или как? Ваше мнение?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа