Size: a a a

Compiler Development

2020 December 16

K

Kir in Compiler Development
источник

M

MrSmith in Compiler Development
Проблема в том что это человек врятли вообше способен разобрать
источник

K

Kir in Compiler Development
(там не LR, а какая-то херня на 16 тыщ строк)
источник

BD

Berkus Decker in Compiler Development
Божественный пример как код вообще в принципе писать не надо.
источник

K

Kir in Compiler Development
ДА!
источник

M

MrSmith in Compiler Development
Kir
(там не LR, а какая-то херня на 16 тыщ строк)
Ну вот это я явно не осиливаю
источник

K

Kir in Compiler Development
Так надо написать парсер С, соответствующий стандарту - или какова конечная цель?
источник

BD

Berkus Decker in Compiler Development
MrSmith
всеравно lalrpop мне орет что есть ошибки жифт редукции что говорит о том что часть парсера не LR 1 как мне сказали в чате парсера
ну ты их и не сможешь избежать, у тебя валидный си например

volatile volatile volatile int int c;
источник

M

MrSmith in Compiler Development
Фронт си к ллвм, ну понятно дело что щас цель написать парсер, лексер я сделал
источник

BD

Berkus Decker in Compiler Development
и поди распарси это г
источник

BD

Berkus Decker in Compiler Development
попробуй packrat 😛
источник

K

Kir in Compiler Development
В C например есть
int foo;

и
int foo(int);

Которые две разные вещи (второе объявляет функцию без тела).
источник

M

MrSmith in Compiler Development
источник

BD

Berkus Decker in Compiler Development
peg
источник

BD

Berkus Decker in Compiler Development
вот это всё
источник

K

Kir in Compiler Development
И это уже конфликт
источник

K

Kir in Compiler Development
Либо peg, либо бери tree-sitter
источник

BD

Berkus Decker in Compiler Development
tree-sitter наверное неплохой вариант да
источник

BD

Berkus Decker in Compiler Development
там заодно и ништяки в комплекте
источник

K

Kir in Compiler Development
последний выдерет из сырца гаратированно правильное поддерево, а всё что кроме пометит ERROR-ами
источник