простым языком, а не как в "Теории синтаксического анализа, перевода и компиляции". Я писал лексер во время изучения "Crafting interpreters", но там не говорилось, как переиспользовать формальную грамматику.
Читай ту самую книгу про парсинг же.
> как пишутся LL(k) лексер Чаще всего — никак (почти все они представляют собой смесь DFA (задаваемых регулярными выражениями) и кода на каком-то PL общего назначения — LL для этого не нужен). > и парсер Кажется, даже в Dragon Book это подробно описано, в т.ч. построение предиктивного парсера "вручную" для LL(1).
Ну а если нет "какого-то PL общего назначения"? Я ведь сказал, что мне нужен парсер на своём языке.
А у Вас язык не общего назначения? Тем не менее, если он Turing complete, это почти наверняка не имеет значения — он подойдёт. И да, "смесь" тоже нужна не всегда — может хватить и только DFA. Или, наоборот (если не хотите разбираться с теорией) — напишите и lexer (любым способом), и parser (преобразованием грамматики в recursive descent) вручную. Edit: или даже не пишите lexer вовсе — используйте только recursive descent, так многие поступают.
Ну... Тьюринг-полный, конечно. Я бы не стал писать другой. Общего назначения - надеюсь, пока что там слишком скромный функционал для этого.
Обсуждают сегодня