Я пытаюсь создать простой лексер / парсер с помощью Alex / Happy в Haskell, и я хотел бы сохранить некоторую информацию о локализации из текстового файла в моем окончательном AST.
Мне удалось построитьиспользуя лексера Alex, который создает список токенов с локализацией:
data Token = Token AlexPosn Foo Bar
lexer :: String -> [Token]
в моем файле Happy, при объявлении части токена% я могу объявить семантическую часть токена с символом $$
%token FOO { Token _ $$ _ }
и в правиле разбора $ i будет ссылаться на этот $$.
foo_list: FOO { [$1] }
| foo_list FOO { $2 : $1 }
Есть ли способ сослаться на часть AlexPosn и к Foo-части токена FOO?Прямо сейчас я знаю только, как относиться только к одному из них.Я могу найти информацию о способе «добавить несколько $$» и обратиться к ним впоследствии.
Есть ли способ сделать это?
V.