bmstu-iu9 / bmstu-iu9/refal-5-lambda

Генератор лексических анализаторов на основе регулярных выражений

Open
#50 7 comments 0 reactions 0 assignees View on GitHub
study
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.