R5FW-Parser
Лексический анализатор для Рефала-5, для указанного файла формирует последовательность токенов.
<Scan e.SourceFile> == t.Token*
t.Pos ::= (s.Line s.Col e.FileName)
Возвращает последовательность токенов для данного файла. Тип t.Token
описан в R5FW-Parser-Defs
.
Позиция в исходном тексте, формируемая лексическим анализатором, содержит номер колонки, строки и имя файла.
<ScanString-FromPos t.InitPos e.String> == e.Tokens
t.InitPos ::= t.Pos
Разбивает строку на токены, начальной позицией принимается t.InitPos
.
<Parse e.Tokens>
== Success e.Refal5-AST
== Fails t.Error*
t.Error ::= (t.SrcPos e.Message)
Функция Parse
принимает последовательность токенов и возвращает абстрактное
синтаксическое дерево. Типы t.Token
и e.Refal5-AST
описаны
в R5FW-Parser-Defs
.
Если файл содержит корректный текст на Рефале, функция возвращает Success
и синтаксическое дерево. Иначе функция возвращает Fails
и список ошибок.
Таким образом, возвращаемое дерево всегда соответствует корректной программе.
К позициям токенов парсер относится как к чёрному ящику, внутрь t.SrcPos
не заглядывает.
t.Error
— сообщение о синтаксической или семантической ошибке.