LINUX.ORG.RU

История изменений

Исправление fluorite, (текущая версия) :

Срочно нужна формализация этого ввиде ll1-грамматики.

«Следующий проход» - это обход ast. Я изначально это и имел ввиду. Парсер оставляем LL(1), а приседания делаем после.

причём тут переменные, llvm, машкод

Ты же сказал, что таблица символов это чушь из википедии. Пока не объяснишь что это такое по-твоему, объяснять не буду.

на это тоже ответ.

банально потому что их так удобнее писать

// let a : int ;
// var ::= letKeyword identifier : type ;?
Var parseVar() {
    Token t = look();
    // и вот с генератором ты тут так не сделаешь
    if (t == "leet") {
        out("Maybe you mean 'let'?");
    }
}

Исходная версия fluorite, :

Срочно нужна формализация этого ввиде ll1-грамматики.

«Следующий проход» - это обход ast. Я изначально это и имел ввиду. Парсер оставляем LL(1), а приседания делаем после.

причём тут переменные, llvm, машкод

Ты же сказал, что таблица символов это чушь из википедии. Пока не объяснишь что это такое по-твоему, объяснять не буду.

на это тоже ответ.

банально потому что их так удобнее писать

// let a : int ;
// var ::= letKeyword identifier type ;?
Var parseVar() {
    Token t = look();
    // и вот с генератором ты тут так не сделаешь
    if (t == "leet") {
        out("Maybe you mean 'let'?");
    }
}