我正试图用Sprache写一个解析器来解析一个短语
基本规则是,它应该包含由单个空格分隔的单词,字符串的第一个和最后一个字符都是空格。
我希望这样称呼如下:
string phrase = PhraseParser.Parse(" I want to return up to this point ");并让得到的字符串是“我想要返回到这一点”。
我已经尝试了无数的实现,没有一个完全是为我做的。
由于@PanagiotisKanavos,更新,诀窍是使用.Then()操作符。以下文字:
public static Parser<string> WordParser =
Parse.Letter.Many().Text().Token();
public static Parser<string> PhraseParser =
from leading in Parse.LetterOrDigit.Many().Text()
from rest in Parse.Char(' ').Then(_ => WordParser).Many()
select leading + " " + String.Join(" ", rest);可能还能把它弄干净一点,但概念已经存在了。
发布于 2019-05-13 13:34:04
由于@PanagiotisKanavos,诀窍是使用.Then()操作符。以下工作:
public static Parser<string> WordParser =
Parse.Letter.Many().Text().Token();
public static Parser<string> PhraseParser =
from leading in Parse.LetterOrDigit.Many().Text()
from rest in Parse.Char(' ').Then(_ => WordParser).Many()
select leading + " " + String.Join(" ", rest);https://stackoverflow.com/questions/56111664
复制相似问题