bmstu-iu9 / bmstu-iu9/refal-5-lambda
Генератор лексических анализаторов на основе регулярных выражений
- Dominant language
- C++
- Stars
- 97
- Forks
- 40
- PR merge metrics
- No merged PRs in 30d
Description
На текущий момент система программирования «Простой Рефал» содержит примитивный генератор лексических анализаторов, который на входе принимает таблицу переходов для конечного автомата с семантическими действиями (выдать прочитанную лексему, отбросить прочитанную лексему). Недостаток очевиден: слишком многословное описание, которое довольно сложно составлять.
**Цель работы:** написать для системы программирования на Простом Рефале генератор лексических анализаторов, принимающий на входе описания лексических доменов в виде регулярных выражений.
**Входной язык:** предстоит разработать, регулярные выражения — синтаксис flex.
**Целевой язык:** Рефал. Сгенерированный код должен быть совместим с Простым Рефалом и РЕФАЛом-5.
**Язык реализации:** Простой Рефал, лексика описана на себе (на последней итерации).
Данная задача будет закрыта только после того, как лексический анализатор Простого Рефала будет переписан с использованием нового генератора.
Дабы не плодить сущности, новый генератор лексических анализаторов предполагается сделать, расширив имеющийся. Генератор должен обнаруживать метку начала описания, если старая (`GEN:TOKENS`) — используется старый алгоритм, если новая (например, `GEN:FLEX`), то новый алгоритм.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by locating the existing lexical-analyzer generator that consumes GEN:TOKENS and the current Simple Refal lexer. Read the generator’s transition-table and semantic-action handling first. Done means adding the flex-style regular-expression input path, preserving GEN:TOKENS behavior, generating code compatible with Simple Refal and Refal-5, and rewriting the Simple Refal lexer to use it.
Written by the indexing model from the issue text.
Assessment
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100