Sprache を使用して、数式のドメイン固有言語を解析し始めています。次のようなものを使用して識別子を解析できることはわかっています。
static readonly Parser<string> Identifier =
from leading in Parse.WhiteSpace.Many()
from first in Parse.Letter.Once()
from rest in Parse.LetterOrDigit.Many()
from trailing in Parse.WhiteSpace.Many()
select new string(first.Concat(rest).ToArray());
これから、識別子トークンが Enum のテキスト値の 1 つである場合にのみ成功するパーサーを構築したいと考えています。たとえば、Dimension.Location と Dimension.Time の値を持つ Dimension という Enum があるとします。作りたい
static readonly Parser<Dimension> DimensionIdentifier = ...
解析対象が識別子であり、識別子のトークン文字列が列挙名 ("Location" または "Time") の 1 つである場合にのみ成功し、列挙値 Dimension.Location または Dimension.Time をそれぞれ返します。 . 誰かがおそらく簡単な質問を手伝ってくれますか? ありがとう!