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 — сообщение о синтаксической или семантической ошибке.