Своя реализация G

Делись идеей, получай поддержку и критику!

Своя реализация G

Postby Данил on 21 Oct 2014, 10:05

Доброго всем дня.
Подумал над такой не сложной вещью, как написать свой компилятор своего языка, похожего на G, называть пока его как-то не берусь. Идея следующая, превращать графически представленную программу в код gnuc. Обойтись думаю без визуализации(формочек с кнопочками), кому она нужна, тот её подключит сам через ShellAPI или x11. С параллелизмом думаю тут нужно ещё подумать как-то. Теперь думаю над тем, как должен работать компилятор. Прошу обсуждений именно процесса компиляции. Я вижу этот процесс так.
1. Компилятор анализирует блок диаграмму и находит конечный элемент, который зависит от всех предыдущих. (если не рассматривать параллелизм, то он один)
2. К. строит код этого элемента в функции main (вызывается по умолчанию в c++ при запуске программы). Этот код имеет указатели на какие-то значения (аналог входных параметров SubVI)
3. Создаёт функции для субприборов, от которых зависит предыдущая функция, записывая их указатель в предыдущую.
4. Продолжать развертывать таким же образом, пока не будут обработаны все SubVI
5. Компилировать код GNU C компилятором.
Думаю тут самым сложным будет реализация структур: циклов, событий итд.
Данил
beginner
beginner
 
Posts: 27
Joined: 20 Oct 2014, 10:35
LabVIEW Version: 2010 linux
Karma: 10

Re: Своя реализация G

Postby Kosist on 21 Oct 2014, 10:51

Интерестная идея, ведь каждый программист мечтает создать свою операционную систему, верно? :wink: А целесообразно ли это? Ведь время и ресурсы для решения этой задачи можна потратить на изучение, глубокое изучение того же :labview: - ведь здесь нужно копать и копать, работы - не начатое поле...
Но - желаю удачи во всех начинаниях!
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 786
Joined: 21 Feb 2011, 23:44
Location: СумГУ
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 236
CLAD I/O VIP students

Re: Своя реализация G

Postby AndreyDmitriev on 21 Oct 2014, 11:40

Думаю сначала нужно освоить курс "основы построения компиляторов". В интернете достаточно информации по этой теме. Тогда размышления типа "Думаю тут самым сложным будет реализация структур: циклов, событий итд." отпадут сами собой.

Альфред В. Ахо, Моника С. Лам, Рави Сети, Джеффри Д. Ульман. Компиляторы: принципы, технологии и инструментарий = Compilers: Principles, Techniques, and Tools. — 2-е изд. — М.: Вильямс, 2010. — 1184 с. — ISBN 978-5-8459-1349-4.
Робин Хантер. Основные концепции компиляторов = The Essence of Compilers. — М.: Вильямс, 2002. — 256 с. — ISBN 0-13-727835-7.
Хантер Р. Проектирование и конструирование компиляторов / Пер. с англ. С. М. Круговой. — М.: Финансы и статистика, 1984. — 232 с.
Д. Креншоу. Давайте создадим компилятор!
Серебряков В. А., Галочкин М. П. Основы конструирования компиляторов.

Во-вторых, удобнее будет не в Си это дело перегонять, а в псевдокод LLVM, ну и затем уже компилировать в бинарный код.
http://habrahabr.ru/post/47878/
http://habrahabr.ru/post/119850/
Собственно, LabVIEW точно так и поступает.
User avatar
AndreyDmitriev
VIP
VIP
 
Posts: 1225
Joined: 03 Feb 2010, 00:42
Location: Германия
Medals: 6
Activity (1) Professionalism (1) Tutorials (1) Gold (1) Black (2)
LabVIEW Version: 6.1 - 2016
Karma: 433

Re: Своя реализация G

Postby Данил on 21 Oct 2014, 12:13

Данил
beginner
beginner
 
Posts: 27
Joined: 20 Oct 2014, 10:35
LabVIEW Version: 2010 linux
Karma: 10

Re: Своя реализация G

Postby Borjomy_1 on 21 Oct 2014, 13:00

Last edited by Borjomy_1 on 21 Oct 2014, 13:10, edited 1 time in total.
Borjomy_1
expert
expert
 
Posts: 1766
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

Re: Своя реализация G

Postby Jakob Brontfeyn on 21 Oct 2014, 13:05

Интересно то, что лабвью изначально задумывался не как инструмент для
чистого программиста и только программиста, хорошо владеющего С и
другими текстовыми языками, но не достаточно понимающего всю технологию
инженерного обьекта,
а как инструмент некого инженера, который работает с графическим материалом
например електросхемами, принципиальными, монтажными, разводками
трубных проводок, распределительный сетей, и тому подобное, спектр
очень широк, хорошо знающего свой технологический обьект и знакомого
лишь с некоторыми основами текстязыкового программирования.
Я лично предпочел пойти другим путем
viewtopic.php?f=179&t=4673&start=45#p43928
User avatar
Jakob Brontfeyn
expert
expert
 
Posts: 1690
Joined: 28 Feb 2008, 11:01
Medals: 6
Activity (1) Gold (1) Silver (2) Black (2)
Karma: 225
VIP

Re: Своя реализация G

Postby Данил on 21 Oct 2014, 13:17

Думаю, что параллелизм можно реализовать так, каждая параллель запускается в новом процессе (одна exeшка, но запускается в инной среде {arc,arv,envp}, примером будет chrome.exe), и уже именно ОС, а это её задача, а не интерпретатор, занимается задачей параллелизма, а связь между процессами реализовать хоть через tcp/ip, если в windows для этого не догадались внутренние сокеты сделать. Не потребуется адаптация к многопроцессорным системам, ведь это опять же задача ОС. А писать верхи, заново вряд-ли нужно, если есть исходник SubVI, его будет легко портировать. Можно и не потерять 20ти летний труд других людей, если он конечно opensource.
Данил
beginner
beginner
 
Posts: 27
Joined: 20 Oct 2014, 10:35
LabVIEW Version: 2010 linux
Karma: 10

Re: Своя реализация G

Postby Данил on 21 Oct 2014, 13:36

Данил
beginner
beginner
 
Posts: 27
Joined: 20 Oct 2014, 10:35
LabVIEW Version: 2010 linux
Karma: 10

Re: Своя реализация G

Postby Borjomy_1 on 21 Oct 2014, 13:59

Borjomy_1
expert
expert
 
Posts: 1766
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

Re: Своя реализация G

Postby Данил on 21 Oct 2014, 14:25

Last edited by Данил on 21 Oct 2014, 14:34, edited 1 time in total.
Данил
beginner
beginner
 
Posts: 27
Joined: 20 Oct 2014, 10:35
LabVIEW Version: 2010 linux
Karma: 10

Re: Своя реализация G

Postby Borjomy_1 on 21 Oct 2014, 14:33

Borjomy_1
expert
expert
 
Posts: 1766
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

Re: Своя реализация G

Postby Данил on 21 Oct 2014, 14:40

Данил
beginner
beginner
 
Posts: 27
Joined: 20 Oct 2014, 10:35
LabVIEW Version: 2010 linux
Karma: 10

Re: Своя реализация G

Postby Super Star on 21 Oct 2014, 14:59

лучше реализовать "софт", который из VI будет делать блок-диаграмму в Visio
я люблю свою работу.... Я приду сюда в субботу ...
User avatar
Super Star
adviser
adviser
 
Posts: 228
Joined: 07 Feb 2013, 08:37
LabVIEW Version: 2011
Karma: 35

Re: Своя реализация G

Postby Borjomy_1 on 21 Oct 2014, 15:01

Хм... что-то я не припомню проблем с запуском VI после установки версии :labview: без перезапуска компа.

Что касается самого компилятора, то так как я заканчивал институт по этой части (теория компиляции), то ваши вопросы вызывают некоторое недоумение. Для начала предложил-бы вам начать с классики - компилятор Бейсика. В принципе, :labview: ничем особенным от него не отличается. Разве что лексическим представлением (т.е вместо символов графические элементы).
Borjomy_1
expert
expert
 
Posts: 1766
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

Re: Своя реализация G

Postby IvanLis on 21 Oct 2014, 17:30

Как говориться "Чем бы дитя не тешилось - лишь бы не руками" :wink:

В первую очередь определитесь, что Вы хотите. Транслятор или компилятор, судя по постам, именно транслятор мнемосхем в код С.

Посмотрите проект FLProg (http://flprog.ru/), там решается подобная задача (http://flprog.ru/FLProg/pid218088913/si ... i217633534).
Можете пообщаться с автором, может найдете общий язык.

Наличие свободного времени это хорошо, а еще лучше если Вы его будите расходовать с пользой :super:
Знание нескольких принципов освобождает от знания многих фактов!





User avatar
IvanLis
professor
professor
 
Posts: 4489
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 697
hardware VIP bloggers teachers

Next

Return to Проекты

Who is online

Users browsing this forum: No registered users and 3 guests

cron