Size: a a a

Compiler Development

2021 May 11

МБ

Михаил Бахтерев... in Compiler Development
Спасибо за ссылку. Полезно
источник
2021 May 12

AK

Andrei Kurosh in Compiler Development
Вмемориз!
источник
2021 May 13

РС

Роман Соловьев... in Compiler Development
Всем привет, никак не могу понять принцип построения Follow. First понял сразу, а Follow пока что никак.
Смотрю вот этот пример:

Input :
E  -> T R
R  -> + T R
T  -> F Y
Y  -> * F Y
F  -> (E) | i

First(E)= { (, i }
First(R)= { + }
First(T)= { (, i }
First(Y)= { * }
First(F)= { (, i }

Follow(E) = { $, ),  }
Follow(R) = { $, ),  }
Follow(T) = { +, $, ),  }
Follow(Y) = { +, $, ),  }
Follow(F) = { *, +, $, ),  }

Например  Follow(F)  это разве не First(Y) ? т.е. Follow(F) => First(Y) => {*}

а как расписывать Y и T чет совсем не понятно т.к. они друг от друга зависят в моем понимании😬
источник

AK

Artem Kobzar in Compiler Development
А у Y там нигде не потерялось правило вроде Y -> * F Y | $?
Потому что выглядит из Follow, что где-то есть финализирующее правило.
В случае, если все таки оно где-то присутствует, тогда
Follow(F) = First(Y) & Follow(Y)
Что раскрывается в
Follow(F) = {*} & {+, $, )}, что и даёт ваш результат.
источник

K

Kir in Compiler Development
Да, тут явно не хватает как минимум правила с $
источник

AK

Artem Kobzar in Compiler Development
+
источник

РС

Роман Соловьев... in Compiler Development
тама такое
источник

AK

Artem Kobzar in Compiler Development
Тогда понятно, у Вас есть 2 правила с пустым выводом (финализирующие).
Как результат, Y у Вас может развернуться в пустое значение и следующие терминалы после Y будут следующими и для F
источник

AK

Artem Kobzar in Compiler Development
| # - это оно
источник

K

Kir in Compiler Development
Взаимно-рекурсивщину я делал по принципу "пока не перестанет меняться"
источник

AK

Artem Kobzar in Compiler Development
Или нет, есть же и $
источник

K

Kir in Compiler Development
А правила с пустым вводом я у себя вообще запретил
источник

K

Kir in Compiler Development
https://github.com/Heimdell/LR/blob/master/src/Table.hs#L63 - вот моя реализация. close f x - это транзитивное замыкание функции f с начальным значением x
источник

K

Kir in Compiler Development
Будет применять f к свежим изменениям аккумулятора, пока тот не перестанет меняться
источник

RE

Roman Elizarov in Compiler Development
Коллеги, мы в Kotlin взялись за активную разработку нового WASM бэкэнда для компилятора. В этот раз напрямую (без LLVM) будем из нашего промежуточного представления (Kotlin IR) генерировать на выходе WASM-овый байткод. Набираем команду. Есть вакансии: https://spb.hh.ru/search/vacancy?text=kotlin%2Fwasm
источник

M

MaxGraey in Compiler Development
Кстати по теме WebAssembly существует тематическая группа
https://t.me/WebAssembly_ru
источник

IJ

Igor 🐱 Jirkov in Compiler Development
Это команда @glavpochtampt ?
источник

IJ

Igor 🐱 Jirkov in Compiler Development
Или я отстал от жизни
источник

RE

Roman Elizarov in Compiler Development
Это команда @bashorov
источник

RE

Roman Elizarov in Compiler Development
Но @glavpochtampt тоже очень ждет, когда мы ему wasm подгоним :)
источник