parsecで構文解析器を作っています。対象ソースコードのどこに構文エラーがあるのか表示したいです。
構文解析器はトークナイザからの出力を受け取り、その構文を解析します。
という型になります。
一回トークナイザを挟むとそのトークンがソースコードの何行何列目にあるかの情報がなくなり、tokenPrim関数でSourcePosの計算ができません。これってどうやって解決したらいいでしょうか?TokenにSourcePosを含めるとパース処理の他に位置計算が含まれるのでコードが読みにくくなるのであまりやりたくないなぁと思っています。
どなたかお教えいただけると非常に助かります!
構文解析器はトークナイザからの出力を受け取り、その構文を解析します。
tokenize :: Parsec String () [Token] syntaxAnalyze :: Parsec [Token] () SyntaxTree
という型になります。
一回トークナイザを挟むとそのトークンがソースコードの何行何列目にあるかの情報がなくなり、tokenPrim関数でSourcePosの計算ができません。これってどうやって解決したらいいでしょうか?TokenにSourcePosを含めるとパース処理の他に位置計算が含まれるのでコードが読みにくくなるのであまりやりたくないなぁと思っています。
どなたかお教えいただけると非常に助かります!