我正在尝试使用parsec库,我不知道如何处理这个基本任务。
假设我有以下内容:
data Foo = A | AB
我希望字符串“a”被解析为A
和“a b”AB
。如果我这样做:
parseA :: parser Foo
parseA = do
reserved "a"
return A
parseAB :: parser Foo
parseAB = do
reserved "a"
reserved "b"
return AB
parseFoo :: parser Foo
parseFoo = parseA
<|> parseAB
然后parseFoo
会将“a b”解析为A
,因为parseA
并不关心在消费'a'后仍然留下非空格。如何解决这个问题?
答案 0 :(得分:3)
您需要将语法更改为<!DOCTYPE html>
{% load static %}
{% load i18n %} // <-- import for trans tags
{% load compress %}
并使用parsec中的AB | A
,这为您的解析器提供了前瞻功能。
这应该有效
try