J'essaye de construire un simple lexer/analyseur avec Alex/Happy dans Haskell, et je voudrais garder certaines informations de localisation du fichier texte dans mon finale AST.Comment garder plusieurs valeurs sémantiques pendant l'analyse avec Happy/Haskell
j'ai réussi à construire un lexer en utilisant Alex qui Dressez une liste de tokens avec localisation:
data Token = Token AlexPosn Foo Bar
lexer :: String -> [Token]
dans mon dossier Heureux, lors de la déclaration de la% partie symbolique, je déclare ce sont la partie sémantique de le jeton avec le symbole $$
%token FOO { Token _ $$ _ }
et dans la règle d'analyse, le $ i se référera à ce $$.
foo_list: FOO { [$1] }
| foo_list FOO { $2 : $1 }
Est-il possible de se référer à la partie AlexPosn et à la partie Foo du FOO jeton? En ce moment je ne sais comment faire référence à un seul d'entre eux. Je peux trouver des informations sur un moyen d '"ajouter plusieurs $$", et de s'y référer après.
Existe-t-il un moyen de le faire?
V.
En fait, cela ne semble pas possible même dans le C flex/bison, donc il ne devrait pas être possible directement dans haskell ou caml. Cependant, je pourrais utiliser un tuple data Token = Token (AlexPosn, Foo, Bar)) au lieu de plusieurs arguments. Je laisse la question ouverte pendant quelques jours mais je pense que je la fermerai bientôt. – Vinz