Anonymous
чейн это ? ?
Max
Маjко
Я решил пока не трогать, потом перепишу на future-async
Vladimir
Anonymous
точка же не часть оператора
Anonymous
то есть можно скобки засунуть
Vladimir
точка это оператор
Vladimir
почему нет
Anonymous
отдельный
分解物質
Vladimir
分解物質
это как
enum JSON {
I(i64),
F(f64),
S(String),
B(bool),
Arr(Vec<JSON>),
Obj(HashMap<String, JSON>),
}
для json
Vladimir
ну
分解物質
ну
分解物質
и как без него
Vladimir
да сложно
Vladimir
кушая кактусы
Max
Vladimir
Ну я типа не спец в компиляторах и хз есть ли в том же паскале (если он однопроходной) оптимизации какие-то?
Anonymous
смотря в каком паскале?
Vladimir
я то понимаю что для модульности и разбиения парсера АСТ нужно, ибо так проще всего обработать исходный код
分解物質
Vladimir
впоросто по то, как формально звучит "мотивация" аст
Max
В однопроходном почти нихрена нет (кроме простейших peephole фигулин) и быть не может. В паскале образном, конечно — Вирт эту тему везде толкать любит в своей лит-ре
分解物質
Berkus
分解物質
分解物質
вывод типов тоже требует заглядывания наперёд
Vladimir
кстати тот енам в жсоне, тоже называется AST?
分解物質
Vladimir
или есть какое-то другое название, приминимое только к структурам данных
Vladimir
окей, с аст разобрались
Vladimir
нахуй мир?
Vladimir
и mir
分解物質
нахуй мир?
https://blog.rust-lang.org/2016/04/19/MIR.html
Berkus
нахуй мир?
M Intermediate Representation - значит в этом промежуточном представлении удобно делать какие-то вещи
Alex
космическая станция это.
Vladimir
да я понимаю, что "что-то" удобно, вопрос "что"
Nikita
Vladimir
да и так делают же
Nikita
Да вот только неудобно
Berkus
ты можешь использовать любое количество IR в процессе компиляции - какие-то исключительно временно, какие-то доживают до более поздних фаз генерации
Vladimir
так а в чем удобство х) АСТ ж есть, или не теми концепциями оперирует АСТ?
分解物質
Vladimir
там такая простыня, и они вроде не особо объясняют почему удобнее. Нет примеров "почему так нельзя на аст"
Nikita
Berkus
分解物質
Vladimir
х)
Vladimir
каждый напишите что можно
Vladimir
а то я не понял
Berkus
IR рождается из какой-то практической необходимости - погоняли, поняли что тормозит - впилили еще один IR
Berkus
Nikita
Можно всю семантику запихнуть между АСТ и ллвм
Nikita
Можно даже ллвм выкинуть и генерировать сразу машинный код
Nikita
Но зачем?
Vladimir
но ведь хуйня типа
match tree_set.get(bla) {
Some(x) => {}
None => tree_set.insert(bla, y);
}
в аст низя
分解物質
Vladimir
Vladimir
вносят дополнительную хуетень, а оно ускоряется
Vladimir
?
ну нету ж реализации такой херни без мира
Vladimir
Berkus
"Любую проблему можно решить введением промежуточного слоя, кроме проблемы слишком большого количества промежуточных слоев"
Vladimir
а
分解物質
Vladimir
ну да
Berkus
Vladimir
вот я скорее Бритве Оккама доверяю
分解物質