Comments 11
Название уже хорошее... евпочя
Разве для Раста нет кодогенератора грамматического парсера на основе какого-нибудь из языков описания грамматик? Было бы гораздо легче декларативно её описать.
re2c в последней версии для раста генерит код
Кодогенераторы есть, конечно. Но кажется, что освоить язык Rust лучше помогает изучение языка, а не правил написания грамматик. Да и автору другие руководства по парсингу в Rust показались слишком сложными.
Конкретно на Раст есть библиотека Pest, поддерживающая крайне удобный способ описания грамматик.
Код будет почище, если pc, fp объявить как usize, а то эти постоянные `as i32`, `as usize`…
ps ага, вижу что значения pc/fp кладутся в стек `data`, а потому преобразование не избежать в этих местах.
ps ага, вижу что значения pc/fp кладутся в стек `data`, а потому преобразование не избежать в этих местах.
Лексер читать больно. Каждый токен делает копию строки из входного потока, а функции типа lex_number делают посимвольно push_str, разве это не лишние аллокации?
Идеально было бы придумать что-то типа «срезов», чтобы токен ссылался на позицию+длину во входном файле.
Идеально было бы придумать что-то типа «срезов», чтобы токен ссылался на позицию+длину во входном файле.
Sign up to leave a comment.
Минимальная реализация Lua на Rust