Functional programming 抑制来自'的空结果;许多';在';顺序(p,多(p))和#x27;使用解析器组合器构造
我正试图按照Hutton和Meijer的“一元解析器组合器”构建解析器组合器。我的实现是PostScript,但我认为我的问题是combinator解析器的一般性问题,而不是我的具体实现 作为一个小练习,我将使用解析器识别正则表达式Functional programming 抑制来自'的空结果;许多';在';顺序(p,多(p))和#x27;使用解析器组合器构造,functional-programming,postscript,parser-combinators,Functional Programming,Postscript,Parser Combinators,我正试图按照Hutton和Meijer的“一元解析器组合器”构建解析器组合器。我的实现是PostScript,但我认为我的问题是combinator解析器的一般性问题,而不是我的具体实现 作为一个小练习,我将使用解析器识别正则表达式 (pc9.ps)run /Dot (.) char def /Meta (*+?) anyof def /Character (*+?.|()) noneof def /Atom //Do
(pc9.ps)run
/Dot (.) char def
/Meta (*+?) anyof def
/Character (*+?.|()) noneof def
/Atom //Dot
//Character plus def
/Factor //Atom //Meta maybe seq def
/Term //Factor //Factor many seq def
/Expression //Term (|) char //Term xthen many seq def
/regex { string-input //Expression exec ps } def
(abc|def|ghi) regex
quit
它正在工作,但输出中有大量的[]
空数组,当我尝试绑定处理程序来处理值时,这些数组确实会造成阻碍
$ gsnd -q -dNOSAFER pc9re2.ps
stack:
[[[[[97 []] [[98 []] [[99 []] []]]] [[[100 []] [[101 []] [[102 []]
[]]]] [[[103 []] [[104 []] [[105 []] []]]] []]]] null]]
每当排序组合器接受来自零次出现的可能
或多个
(使用可能
)的结果时,就会发生这种情况
使用解析器组合器排除输出中的额外噪声的正常方法是什么
叹气。似乎我可以围绕它来实施。我在seq
中添加了特殊代码,以检测右手边的空边,并将其丢弃。关于其他问题…叹气。似乎我可以围绕它来实施。我在seq
中添加了特殊代码,以检测右手边的空边,并将其丢弃。关于其他问题