Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Вопрос-Ответ Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8 9 10 .. 13   вперед  Ctrl
 Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
miltorg
Member

Откуда: Калининград
Сообщений: 757
Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++

Пока ещё нет ничего. Критика приветствуется.

Присоединяйтесь.
16 окт 20, 09:26    [22215223]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6478
miltorg,

А какая цель этой транспипиляции?
16 окт 20, 09:59    [22215238]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
miltorg
Member

Откуда: Калининград
Сообщений: 757
env,
Чтобы код на любом языке можно было переделать в код на любом другом языке.
Разве же это будет не прекрасно?
16 окт 20, 10:30    [22215249]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
Алексей Роза
Member

Откуда: РФ
Сообщений: 626
будет прекрасно, если перестанете тут нести свой бред и займётесь уже работой.

Сообщение было отредактировано: 16 окт 20, 10:59
16 окт 20, 11:02    [22215274]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6478
miltorg,

Задача не из простых. Для этого надо очень хорошо знать оба языка, понимать как парадигмы одного реализуются в другом, сделать корректный маппинг встроенных библиотек и основных фреймворков и т.п.

Для себя, наверное, интересный проект, но практического использования придумать не могу.
16 окт 20, 11:12    [22215284]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
hVostt
Member

Откуда:
Сообщений: 18342
miltorg
Присоединяйтесь.


Присоединяюсь. Есть чо посмотреть уже?
Давайте ссылку на исходники, будем смотреть.

Модератор: Тема перенесена из форума "Программирование".


Сообщение было отредактировано: 16 окт 20, 12:22
16 окт 20, 11:22    [22215293]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
x1ca4064
Member

Откуда:
Сообщений: 1202
miltorg,
Я не знаю Perl, совсем. Поэтому вопрос:
На Perl можно писать самомодифицирующийся код?

Т.е. один модуль Perl создает другой модуль Perl и начинает вызывать из него методы.
16 окт 20, 13:02    [22215363]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
miltorg
Member

Откуда: Калининград
Сообщений: 757
hVostt
miltorg
Присоединяйтесь.


Присоединяюсь. Есть чо посмотреть уже?
Давайте ссылку на исходники, будем смотреть.

Модератор: Тема перенесена из форума "Программирование".


Под Линукс.

Пока только для print

Это только пример, образец. Не доделано. не сделано.

https://drive.google.com/file/d/1acEXBgqvYR5v9RggvKwmSeFMPRGOe6N2/view?usp=sharing
16 окт 20, 13:31    [22215399]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
miltorg
Member

Откуда: Калининград
Сообщений: 757
x1ca4064, ни когда не интересовался
16 окт 20, 13:32    [22215404]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
x1ca4064
Member

Откуда:
Сообщений: 1202
miltorg
x1ca4064, ни когда не интересовался


Жаль - это один из многих вопросов, от ответа на который зависит реализация Вашего проекта.
16 окт 20, 14:58    [22215495]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
Агрох
Member

Откуда:
Сообщений: 45
miltorg

Пока только для print


Я так понимаю код просто взят из проекта другого человека этак 2016 года выпуска? Причём тот человек, судя по всему, понял, что то, что он придумал - бред и забросил проект.

На уровне print и X=Y+Z скорее всего код удастся конвертировать. Дальше сложность будет нарастать, вплоть до такого уровня, когда проще будет написать свой собственный компилятор/интерпретатор, чем описывать конвертацию очередной функции.

Немного конструктива: возможно имеет смысл делать конвертацию через что то типа доменов. Т.е. код Perl сначала преобразуется в некий промежуточный вид, имеющий чётко описанную структуру, из которого уже преобразуется в C++. Это упростит разделение задачи на шаги, проще будет сделать двунаправленный конвертер и если надо будет поменять что то в коде конвертации только в одном направлении то и менять это надо будет в одном месте, а не по всей цепочке конвертации.

Сообщение было отредактировано: 16 окт 20, 16:15
16 окт 20, 16:19    [22215593]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
miltorg
Member

Откуда: Калининград
Сообщений: 757
Дописал переменную "по умолчанию"

https://drive.google.com/file/d/11K7AT9Bo0H2l2fpWIT6BhRcZUoqvWYhY/view?usp=sharing
16 окт 20, 16:42    [22215609]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
miltorg
Member

Откуда: Калининград
Сообщений: 757
Пока мне нравиться. Я буду потихоньку её доделывать.

Жалко что никто не захотел написать конвертера ни на одну функцию.
16 окт 20, 16:45    [22215612]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
Ы2
Member

Откуда:
Сообщений: 182
miltorg, есть такая несвежая штука p2c (Pascal to C translator). Может быть, внутри у нее увидите что-то полезное.
16 окт 20, 19:29    [22215681]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51521
Агрох
Дальше сложность будет нарастать, вплоть до такого уровня, когда проще будет написать свой собственный компилятор/интерпретатор, чем описывать конвертацию очередной функции.

Да вообще-то это единственный способ написания такого конвертера. Компилируешь исходную программу в дерево выполнения, потом из него порождаешь программу на целевом языке так, чтобы она при компиляции дала точно такое же дерево.
17 окт 20, 14:09    [22215901]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
miltorg
Member

Откуда: Калининград
Сообщений: 757
Сделал чтение файла. Работу с регулярными выражениями

https://drive.google.com/file/d/1JsutnjIMqht8ravdFnlwgGkMUskEazW_/view?usp=sharing

Сообщение было отредактировано: 17 окт 20, 20:10
17 окт 20, 20:14    [22216037]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
miltorg
Member

Откуда: Калининград
Сообщений: 757
А чего вы мне не помогаете? Я, конечно же всё делаю на регулярках

например:

if (

s/print;/cout << u;/

|| s/print/cout <</

) {print V " $_"}
17 окт 20, 20:19    [22216038]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
miltorg
Member

Откуда: Калининград
Сообщений: 757
В качестве исходника для конвертации я взял:

#!/usr/bin/perl

open D, 'mark.csv';

for (<D>){
  $i=-1; $oc=0;
  s/\n//;

  for(/\d+/g){
    ++$i;
    $oc += $_;
    
    print "$_ ";
    }
  print 'Sred='.$oc/$i;
  print "\n";

  }
close D;
17 окт 20, 20:37    [22216040]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
mayton
Member

Откуда: loopback
Сообщений: 49319
mayton@ryzen-ssd:~/perl$ cat test.pl
#!/usr/bin/perl

open D, 'mark.csv';

for (<D>){
  $i=-1; $oc=0;
  s/\n//;

  for(/\d+/g){
    ++$i;
    $oc += $_;
    
    print "$_ ";
    }
  print 'Sred='.$oc/$i;
  print "\n";

  }
close D;

mayton@ryzen-ssd:~/perl$ cat mark.csv
2.92.0.0,2.95.255.255,"RU","48","Moscow","",55.7522,37.6156,,
2.96.0.0,2.96.23.255,"GB","H8","Liverpool","",53.4167,-3.0000,,
2.96.24.0,2.96.27.255,"GB","N1","Saint Helens","",53.4500,-2.7333,,
2.96.28.0,2.96.47.255,"GB","H8","Liverpool","",53.4167,-3.0000,,
2.96.48.0,2.96.51.255,"GB","H2","Skelmersdale","",53.5333,-2.8000,,
2.96.52.0,2.96.55.255,"GB","H8","Liverpool","",53.4167,-3.0000,,
2.96.56.0,2.96.59.255,"GB","H2","Skelmersdale","",53.5333,-2.8000,,
2.96.60.0,2.96.61.255,"GB","N1","Saint Helens","",53.4500,-2.7333,,
2.96.62.0,2.96.63.255,"GB","I2","Manchester","",53.5000,-2.2167,,
2.96.64.0,2.96.65.255,"GB","H2","Ormskirk","",53.5667,-2.9000,,
2.96.66.0,2.96.67.255,"GB","H2","Skelmersdale","",53.5333,-2.8000,,

mayton@ryzen-ssd:~/perl$ pp --help
PAR Packager, version 1.049 (PAR version 1.016)

You need to install the perl-doc package to use this program.

mayton@ryzen-ssd:~/perl$ 
mayton@ryzen-ssd:~/perl$ 
mayton@ryzen-ssd:~/perl$ pp test.pl -o test.exe
mayton@ryzen-ssd:~/perl$ 
mayton@ryzen-ssd:~/perl$ ll
total 4780
drwxrwxr-x   2 mayton mayton    4096 Oct 17 21:07 ./
drwxr-xr-x 181 mayton mayton    4096 Oct 17 17:25 ../
-rw-r--r--   1 mayton mayton     726 Oct 17 21:04 mark.csv
-rwxr-xr-x   1 mayton mayton 4875156 Oct 17 21:09 test.exe*
-rw-r--r--   1 mayton mayton     196 Oct 17 21:03 test.pl

mayton@ryzen-ssd:~/perl$ ./test.exe 
2 92 0 0 2 95 255 255 48 55 7522 37 6156 Sred=1209.91666666667
2 96 0 0 2 96 23 255 8 53 4167 3 0000 Sred=392.083333333333
2 96 24 0 2 96 27 255 1 53 4500 2 7333 Sred=1032.58333333333
2 96 28 0 2 96 47 255 8 53 4167 3 0000 Sred=396.416666666667
2 96 48 0 2 96 51 255 2 53 5333 2 8000 Sred=1161.66666666667
2 96 52 0 2 96 55 255 8 53 4167 3 0000 Sred=399.083333333333
2 96 56 0 2 96 59 255 2 53 5333 2 8000 Sred=1163
2 96 60 0 2 96 61 255 1 53 4500 2 7333 Sred=1038.41666666667
2 96 62 0 2 96 63 255 2 53 5000 2 2167 Sred=650
2 96 64 0 2 96 65 255 2 53 5667 2 9000 Sred=1275.33333333333
2 96 66 0 2 96 67 255 2 53 5333 2 8000 Sred=1164.5
17 окт 20, 21:10    [22216047]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
Dima T
Member

Откуда:
Сообщений: 15111
miltorg
А чего вы мне не помогаете?

Руки попкорном заняты, но мы с тобой
17 окт 20, 21:16    [22216050]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
miltorg
Member

Откуда: Калининград
Сообщений: 757
mayton,

О. Исходник идеально работает, как я посмотрю.
17 окт 20, 21:40    [22216056]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
Alibek B.
Member

Откуда:
Сообщений: 3697
x1ca4064
На Perl можно писать самомодифицирующийся код?

Не в буквальном смысле. Но есть функция eval.
17 окт 20, 21:45    [22216058]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
mayton
Member

Откуда: loopback
Сообщений: 49319
Да ну этот pp это все таки не компиллятор а упаковщик насколько я понимаю. Как раз подходит для дистрибуции.

Бери... кодь свои волшебные скрипты и распространяй как приложения. Дороговато конечно 5 мегабайт на любой пустяк.
Но с другой стороны - автономно.

А транспилляция - это миф. Несбыточная мечта. Особенно если вспомнить что в Perl есть функция eval которая
принципиально не компилируется ни во что. Она все равно потребует транслятор в точке использования. Вот
такие пироги.
17 окт 20, 21:45    [22216059]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
miltorg
Member

Откуда: Калининград
Сообщений: 757
Дубль выскочил

Сообщение было отредактировано: 17 окт 20, 21:58
17 окт 20, 21:56    [22216063]     Ответить | Цитировать Сообщить модератору
 Re: Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++  [new]
miltorg
Member

Откуда: Калининград
Сообщений: 757
mayton
Да ну этот pp это все таки не компиллятор а упаковщик насколько я понимаю. Как раз подходит для дистрибуции.

Бери... кодь свои волшебные скрипты и распространяй как приложения. Дороговато конечно 5 мегабайт на любой пустяк.
Но с другой стороны - автономно.

А транспилляция - это миф. Несбыточная мечта. Особенно если вспомнить что в Perl есть функция eval которая
принципиально не компилируется ни во что. Она все равно потребует транслятор в точке использования. Вот
такие пироги.


Странный вы человек. В первом же сообщении я написал что "делать из Perl exe - я умею":

https://www.sql.ru/forum/1329951/est-li-konvertery-iz-odnogo-yazyka-v-drugoy

Потом вы долго смеялись над этим:
Есть ли конвертеры из одного языка в другой?

А теперь - вы предлагаете мне: делать из Perl exe

Научились. Ну слава богу. Повторю. Я ещё и из php умею делать Экзешники.
Мало того. Сейчас есть технологии которые так поступают практически с любым языком.
Но это не Транспиляция. А я делаю Транспиляцию с Perl на C++

Сообщение было отредактировано: 17 окт 20, 21:57
17 окт 20, 22:00    [22216065]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8 9 10 .. 13   вперед  Ctrl
Все форумы / Вопрос-Ответ Ответить