Combinando lexer e parser em um combinador de analisador
estou a usaruu-parsinglib
, mas acho que a seguinte pergunta é genérica combinador de analisador.
Vamos considerar o seguinte exemplo:
Eu tenho um lexer com um combinadorpLex
, que produz uma lista de tokens (do tipoMyToken
). Agora eu quero escrever um analisador, que irá consumir os tokens e construir umAST
.
Qual é a melhor maneira de conectar o lexer e o analisador? Agora eu tenho umlex
função:
lex s = parse ( (,) <lex s = parse ( (,) <$> pLex <*> pEnd) (createStr (LineColPos 0 0 0) s)
gt; pLex <*> pEnd) (createStr (LineColPos 0 0 0) s)
Devo criar uma funçãoparse p = ...
? Se sim, como construí-lo para acompanhar as colunas e linhas do lexer? Ou devo criar umparserCombinator
, que usaria opLex
combinador de alguma forma?