Size: a a a

Compiler Development

2019 September 23

А

Алексей in Compiler Development
Просто я не совсем представляю как в такую структуру перегнать язык программирования, так как почти все языки предусматривают рекурсивные конструкции.
источник

А

Алексей in Compiler Development
точнее вложенные конструкции с произвольной глубиной вложения
источник

А

Алексей in Compiler Development
если это не brainfuck какой-нибудь
источник

K

Konstantin in Compiler Development
в какую структуру?
источник

А

Антон in Compiler Development
Алексей
Просто я не совсем представляю как в такую структуру перегнать язык программирования, так как почти все языки предусматривают рекурсивные конструкции.
А в чем проблема рекурсию и вложенность делать по ссылкам
источник

А

Алексей in Compiler Development
Антон
А в чем проблема рекурсию и вложенность делать по ссылкам
То есть строить AST?
источник

А

Алексей in Compiler Development
Ну то есть языки программирования естественным образом образуют древовидную структуру. В принципе я кажется примерно понимаю как положить её на плоскую таблицу, но там всё равно будет "спрятано" AST потому что элементы таблицы будут ссылаться на другие элементы, неявно образуя то самое дерево (а точнее даже граф)
источник

А

Антон in Compiler Development
Алексей
Ну то есть языки программирования естественным образом образуют древовидную структуру. В принципе я кажется примерно понимаю как положить её на плоскую таблицу, но там всё равно будет "спрятано" AST потому что элементы таблицы будут ссылаться на другие элементы, неявно образуя то самое дерево (а точнее даже граф)
да, только AST делать сложнее
источник

А

Алексей in Compiler Development
Это почему?
источник

O

Oriflame Holding AG in Compiler Development
AST реально делать сложнее, я так и не разобрался с нодами и прочим
источник

А

Антон in Compiler Development
ну скорее потому что пока всё держишь вот в такой таблице можешь не париться о тривиях и расположении нод в дереве
источник

А

Алексей in Compiler Development
эммм
источник

А

Алексей in Compiler Development
тогда такой вопрос, как в такой таблице кодируется такое:
if (cond1) {
 if (cond2) {
   if (cond3) {
     doSmth();
   }
 }
}

?
источник

А

Антон in Compiler Development
... | if | cond1 | uid1
uid1 | if | cond2 | uid2
uid2 | if | cond3 | uid3
uid3 | method| doSmth() | uid4
источник

А

Антон in Compiler Development
пфффффффффффф, изи
источник

А

Алексей in Compiler Development
Антон
... | if | cond1 | uid1
uid1 | if | cond2 | uid2
uid2 | if | cond3 | uid3
uid3 | method| doSmth() | uid4
то есть это AST
источник

А

Алексей in Compiler Development
только вместо нативных ссылок/указателей языка на котором пишется компилятор, делаются косвенный ссылки в виде uid
источник

А

Антон in Compiler Development
Алексей
то есть это AST
похоже ведь, да?
источник

А

Алексей in Compiler Development
Антон
похоже ведь, да?
да
источник

А

Антон in Compiler Development
Алексей
только вместо нативных ссылок/указателей языка на котором пишется компилятор, делаются косвенный ссылки в виде uid
если нужна инфа только об операторах и их положении относительно друг-друга - например интерпретировать другой язык в своём
источник