Size: a a a

Compiler Development

2020 July 09

VK

Val Krylov in Compiler Development
fldlg2
@val_krylov ^ кажется, мы нашли случай, где LL круче, чем LR 😉
Но снова не "чем top-down лучше bottom-up". :) Предполагаю, что для любого top-down можно построить эквивалентный по выводу bottom-up, но доказательств этого (как и доказательств противоположного) сейчас не припомню.
источник

f

fldlg2 in Compiler Development
Val Krylov
Но снова не "чем top-down лучше bottom-up". :) Предполагаю, что для любого top-down можно построить эквивалентный по выводу bottom-up, но доказательств этого (как и доказательств противоположного) сейчас не припомню.
Википедия ссылается на Beatty, J. C. (1982). "On the relationship between LL(1) and LR(1) grammars".
Я посмотрел бегло, и если правильно понял, то там доказывается, что любая p-редуцированная LL(1) есть LALR(1).
p-редуцированная там, вероятно, означает "не содержит нетерминалов, определённых как ϵ‎". Последнее меня немного смущает, надо вникать.
источник

AK

Andrei Kurosh in Compiler Development
cevek
не понимаю о чем речь, если запретить имплентировать разные интерфейсы где могут быть одинаковые имена полей то никаких проблем вроде не видно
а зачем запрещать? вон в C# есть "явная реализация", где пишется InterfaceName.MethodName() и норм
источник

VM

Victor Miasnikov in Compiler Development
Alexander Tchitchigin
Нет, пилить очередного конкурента PVS-Studio/Coverity/PT AI/Fortify/Solar... Кого из наших конкурентов я забыл? 😂
И всех Ada оставит без половины работы ( контроль ^C ^V, мертвый код и т.п. - оставшаяся половина)

( так сегодняшнее "скромное молчание" понимаю.)

Или я "неисправимый оптимист"?
источник

BD

Berkus Decker in Compiler Development
K R
А вот этот замечательный Jit x86-64->ARM? Не надо ли будет рисовать что-то подобное под Windows?
там не джит, там аот в основном
источник

BD

Berkus Decker in Compiler Development
Rustem B.
использует или использовал тут кто-нибудь GNU lightning?
да, но он же древнющий
источник

BD

Berkus Decker in Compiler Development
Rustem B.
использует или использовал тут кто-нибудь GNU lightning?
я даже VCODE немного использовал, но он еще более древнющий
источник

BD

Berkus Decker in Compiler Development
Victor Miasnikov
На Хабре можно узнать неприятные новости о будущем и "подстелить соломки"

Пример:

Кстати, про Apple.

Google поддержал инициативу и теперь обе империи зла будут "чмырить" ( термин верный уж больно: ибо из практики их подельников масштабом помельче) SSL сертификаты сроком более чем на 398 дней.

Никакого зла не хватает...
Раньше можно было закупать на 2 года. Теперь - возни в два раза больше.

( Изготовители сертификатов на "сходняке" были против. Их было 2/3. Но беспредельщикам - не указ)

Такие вот будни империализма...
letsencrypt - cheap, fast, good - pick three
источник

BD

Berkus Decker in Compiler Development
у меня серты вообще на три месяца генерятся, не больше
источник

BD

Berkus Decker in Compiler Development
cevek
такой вопрос: как в строго типизированных языках работают интерфейсы?
допустим у нас есть класс, он имплентирует несколько интерфейсов, и допустим у нас есть функция которая принимает конкретный интерфейс и обращается к какому нибудь полю в нем
как компилятор трансформирует такой код? по сути нужно как то получить смещение для поля в полученном объекте, но объекты приходят разные и с разным набором полей
Stanley Lippman, “Inside C++ Object Model”
источник

BD

Berkus Decker in Compiler Development
Alexander Tchitchigin
Смещение функции print в виртуальной таблице для интерфейса A одинаковое для всех классов.
можно еще на протоколы в objective-c посмотреть, там все немного отличается от с++ но тоже интерфейсы
источник

BD

Berkus Decker in Compiler Development
cevek
ну вот вопрос, а как найти адрес таблицы интерфейса для приходящего инстанса класса?
указатель на таблицу лежит обычно либо с описанием класса (типа) либо с самим инстансом (жирные указатели, трейты вот это всё)
источник

IK

Ivan Kochurkin in Compiler Development
fldlg2
Википедия ссылается на Beatty, J. C. (1982). "On the relationship between LL(1) and LR(1) grammars".
Я посмотрел бегло, и если правильно понял, то там доказывается, что любая p-редуцированная LL(1) есть LALR(1).
p-редуцированная там, вероятно, означает "не содержит нетерминалов, определённых как ϵ‎". Последнее меня немного смущает, надо вникать.
Ну т.е. правила вида

a : x (b | c); b : D | ;


Надо переделывать в

a : x D | x | x c;


?
источник

f

fldlg2 in Compiler Development
Ivan Kochurkin
Ну т.е. правила вида

a : x (b | c); b : D | ;


Надо переделывать в

a : x D | x | x c;


?
Да, наверное.
источник

c

cevek in Compiler Development
Berkus Decker
указатель на таблицу лежит обычно либо с описанием класса (типа) либо с самим инстансом (жирные указатели, трейты вот это всё)
а как кстати проверять принадлежность объекта к классу instanceof если мы передаем поинтер на середину обьекта?
источник

K

Kitsu in Compiler Development
полагаю что никак, если "середина" произвольна
источник

VK

Val Krylov in Compiler Development
Если в "середине" свой указатель на VMT, то через него можно найти начало объекта.
источник

VK

Val Krylov in Compiler Development
Для полного списка извращений можно ознакомиться с тем, как с этим работают компиляторы C++.
источник

c

cevek in Compiler Development
да больше интересно как это сделано в java или в c#
источник

BD

Berkus Decker in Compiler Development
cevek
а как кстати проверять принадлежность объекта к классу instanceof если мы передаем поинтер на середину обьекта?
на середину объекта указатели обычно не передают
источник