Size: a a a

Compiler Development

2020 January 09

BD

Berkus Decker in Compiler Development
Ilmir
А Котлин до сих пор умеет таргетить шестую Джаву. И нейтив (в бете) и JS. Поэтому без разницы, какая версия джава-машины стоит у энтерпрайза. Можно брать самый свежий Котлин.
И? Я про это вроде и говорю, что котлин это починенная джава
источник

I

Ilmir in Compiler Development
Berkus Decker
И? Я про это вроде и говорю, что котлин это починенная джава
Уже не только Джава.
источник

BD

Berkus Decker in Compiler Development
Мнэ, софистика.  Нот интерестед
источник

I

Ilmir in Compiler Development
EgorBo
а я котлин не понимаю. я за ним следил с самой первой беты, но в какой-то момент он стал слишком непонятным для меня, и я бы наверное предпочел Java, быть может с пятком фич повверх.
Какие фичи, кстати, непонятны? У меня профессиональный интерес.
источник

AT

Alexander Tchitchigin in Compiler Development
Ilmir
Какие фичи, кстати, непонятны? У меня профессиональный интерес.
Помню, Бреслав когда-то на заре этого дела (сильно до релиза) обещал запилить что-то вроде аппликативного функтора - видимо, были у него какие-то идейки. Похоже, хорошо, что так и не запилили - а то бы у пользователей вообще крышу снесло и пуканы разорвало... 😂
источник

AT

Alexander Tchitchigin in Compiler Development
На самом-то деле нужно было его про HKT спросить, но я тогда этот момент не понимал...
источник

YS

Yuriy Syrovetskiy in Compiler Development
Alexander Tchitchigin
Помню, Бреслав когда-то на заре этого дела (сильно до релиза) обещал запилить что-то вроде аппликативного функтора - видимо, были у него какие-то идейки. Похоже, хорошо, что так и не запилили - а то бы у пользователей вообще крышу снесло и пуканы разорвало... 😂
а монады там есть?
источник

AT

Alexander Tchitchigin in Compiler Development
Yuriy Syrovetskiy
а монады там есть?
Вот Бреслав порывался сразу аппликативы сделать или что-то в этом духе. Но, вроде, ни аппликативов, ни монад там нет.
источник

EM

Evgenii Moiseenko in Compiler Development
Yuriy Syrovetskiy
а монады там есть?
есть в библиотеке arrow https://arrow-kt.io/docs/core/
но сделано через дефункционализацию https://www.cl.cam.ac.uk/~jdy22/papers/lightweight-higher-kinded-polymorphism.pdf
источник
2020 January 10

FO

FORTRAN ONE LOVE in Compiler Development
Я все-таки дошел до необходимости переписывать тонны кода, поэтому хочется сделать это поумнее...

Есть условно два ЯП с близкими синтаксисами: Fortran 77 и Fortran 90.
Задача взять код на F77 и переписать на F90 и запихнуть его в модули, параллельно развернув неявные определения переменных, дописав окончания циклов*, исправив некоторые строки формата вывода на что-то более читаемое в 2020 году :-)

Думаю делать так:
1. Разделить код на функции/сабрутины и процессорить в дальнейшем их по отдельности.
2. Хранить информацию об используемых переменных и их типах, каких-то ключевых блоков, как например блоки DATA и COMMON, и сам код, в виде связного списка с указанием уровня вложенности. И получить какое-то такое представление:
(функция имя-функции ((use-statements)) ((список-переменных-аргументов)) ((список-внутренних-переменных)) ((список-блоков)) (код))
переменная хранится в виде:
(переменная (параметры-переменной)).
Различные условные операторы можно хранить в виде: ( оператор (условие) ( внутренний-код ) ).
3. Дальше можно вывести это дерево в синтаксисе нужного языка программирования.

Ну и вопросы:
1. Что я переизобрел?
2. Как быть с комментариями и директивами препроцессора: их место не должно поменяться? В каком виде их лучше хранить?
3. В каком виде надо хранить структуру кода? То есть то, что я назвал (код) в п.2.
4. Как быть с детектом goto меток?

------
* Следующая запись корректна:

do 1 i=1, 5
do 1 j=1, 5
1 print *, i*j

Но должно быть исправлено на:

do i=1, 5
do j=1, 5
print *, i*j
end do
end do
источник

FO

FORTRAN ONE LOVE in Compiler Development
FORTRAN ONE LOVE
Я все-таки дошел до необходимости переписывать тонны кода, поэтому хочется сделать это поумнее...

Есть условно два ЯП с близкими синтаксисами: Fortran 77 и Fortran 90.
Задача взять код на F77 и переписать на F90 и запихнуть его в модули, параллельно развернув неявные определения переменных, дописав окончания циклов*, исправив некоторые строки формата вывода на что-то более читаемое в 2020 году :-)

Думаю делать так:
1. Разделить код на функции/сабрутины и процессорить в дальнейшем их по отдельности.
2. Хранить информацию об используемых переменных и их типах, каких-то ключевых блоков, как например блоки DATA и COMMON, и сам код, в виде связного списка с указанием уровня вложенности. И получить какое-то такое представление:
(функция имя-функции ((use-statements)) ((список-переменных-аргументов)) ((список-внутренних-переменных)) ((список-блоков)) (код))
переменная хранится в виде:
(переменная (параметры-переменной)).
Различные условные операторы можно хранить в виде: ( оператор (условие) ( внутренний-код ) ).
3. Дальше можно вывести это дерево в синтаксисе нужного языка программирования.

Ну и вопросы:
1. Что я переизобрел?
2. Как быть с комментариями и директивами препроцессора: их место не должно поменяться? В каком виде их лучше хранить?
3. В каком виде надо хранить структуру кода? То есть то, что я назвал (код) в п.2.
4. Как быть с детектом goto меток?

------
* Следующая запись корректна:

do 1 i=1, 5
do 1 j=1, 5
1 print *, i*j

Но должно быть исправлено на:

do i=1, 5
do j=1, 5
print *, i*j
end do
end do
И на этом уровне можно ли избавиться от части if (cond) goto label? Хотелось бы сделать это в автоматическом режиме, чтобы избежать возможных проблем из-за косорукости человеков :-)

(Готов пожертвовать комментариями в коде)
источник

FO

FORTRAN ONE LOVE in Compiler Development
И как быть с форматированием отдельных строк кода, которые были выровнены вручную?
Например такое:

F = A +
   B

После реиндентации A и B снова должны оказаться в одной колонке.
источник

KR

K R in Compiler Development
В 77 фортране комментарии на строку, поэтому их можно рассматривать как код. Некий statement (C “текст комментария”). При выводе, как правило, нужно приклеивать к блоку ниже.

Но это, наверное, зависит от стиля кода.
источник

KR

K R in Compiler Development
Вообще есть парсер фортрана на hackage
источник

KR

K R in Compiler Development
источник

FO

FORTRAN ONE LOVE in Compiler Development
О! Спасибо! Сейчас опробуем!)
источник

FO

FORTRAN ONE LOVE in Compiler Development
Бгг
источник

FO

FORTRAN ONE LOVE in Compiler Development
"замечательно" работает
источник

KR

K R in Compiler Development
А что там?
источник

FO

FORTRAN ONE LOVE in Compiler Development
K R
А что там?
источник