ePa*_*Pak 12 delphi haskell parsec
我正在尝试学习如何Parsec编写Delphi解析器,但我在定义LanguageDef时遇到困难.
在Delphi中,有两种类型的注释块,(* comments *)和{ comments }.但是LanguageDef的commentStart和commentEnd的类型是String,而不是[String],所以我只能放入一个或另一个.
所以,我尝试制作自己的whiteSpace解析器,但我不确定我是否真的可以将其传入makeTokenParser.
任何帮助,将不胜感激.
谢谢
约翰和克里斯都帮助我了解和解决问题搞定了,但解决的办法包括更换该解析器的大量makeTokenParser提供,所以它不是完全不可取的.
如果我能找到更好的解决方案,我会再次发帖.
我对该Text.ParserCombinators.Parsec.Language文件的阅读是不能直接使用a来完成的LanguageDef.
我相信你正在编写自己的whiteSpace解析器.为了成功使用它,您需要覆盖whiteSpace由其生成的解析器makeTokenParser.在TokenParser通过创建makeTokenParser是用含有一个分析器的每个字段的记录.我们可以创建一个新的记录副本,其中一个字段被替换如下:
-- ask GCHi for the type actual type signature constraints
-- Type sig is approx. fixWhiteSpace :: TokenParser -> Parser -> TokenParser
fixWhiteSpace originalTokenParser myWhiteSpaceParser =
originalTokenParser {whiteSpace = myWhiteSpaceParser}
Run Code Online (Sandbox Code Playgroud)