Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell“parse”未针对特定类型的字符串终止_Haskell_Xml Parsing - Fatal编程技术网

Haskell“parse”未针对特定类型的字符串终止

Haskell“parse”未针对特定类型的字符串终止,haskell,xml-parsing,Haskell,Xml Parsing,当我尝试运行以下命令时,它永远不会终止 textValid :: Char -> Bool textValid c = c /= '<' && c /= '>' && not (isSpace c) text :: Parser String text = manyL (sat textValid) 问题是manyL解析器可以在不使用返回空列表的输入的情况下成功 我们不能通过一个不使用输入作为manyL参数就可以成功的解析器,

当我尝试运行以下命令时,它永远不会终止

textValid :: Char -> Bool
textValid c =  c /= '<' && c /= '>' && not (isSpace c)      

text :: Parser String 
text = manyL (sat textValid)
问题是manyL解析器可以在不使用返回空列表的输入的情况下成功

我们不能通过一个不使用输入作为manyL参数就可以成功的解析器,因为在这种情况下,您得到的正是这样一个无限循环

在第一个文本使用了输入的abc前缀之后,剩下的是def问题是manyL解析器可以在不使用返回空列表的输入的情况下成功

我们不能通过一个不使用输入作为manyL参数就可以成功的解析器,因为在这种情况下,您得到的正是这样一个无限循环


在第一个文本使用了输入的abc前缀后,您将得到def。定义了多少和manyL?我怀疑manyL被空间卡住了。对不起,假设只是manyL,我添加了manyL的定义。将textValid定义为not something是一个典型的解析错误。您允许绝对不在<>中的任何字符,而您应该确切地指定您允许的字符-可能只是字母数字值,以字母开头?任何事情都是不好的。很容易错误地匹配包含在字符串或类似错误中的分隔符。多少和manyL是定义的?我怀疑manyL被空间卡住了。对不起,假设只是manyL,我添加了manyL的定义。将textValid定义为not something是一个典型的解析错误。您允许绝对不在<>中的任何字符,而您应该确切地指定您允许的字符-可能只是字母数字值,以字母开头?任何事情都是不好的。很容易错误地匹配包含在字符串或类似错误中的分隔符。
textValid :: Char -> Bool
textValid c =  c /= '<' && c /= '>' && not (isSpace c)      

text :: Parser String 
text = manyL (sat textValid)
parse (manyL text) "abc def <"
text = many1L (sat textValid)
text = do
    result <- many1L (sat textValid)
    skipSpaces
    return result