2

Ironyを使用してかなり単純なパーサーを作成しようとしていますが、この特定のケースには Irony が適していない可能性があるという結論に達しています。

これらは、私が解析しようとしているものの例です:

server_name  example.com  *.example.com  www.example.*; 

server_name  www.example.com   ~^www\d+\.example\.com$;

server_name   ~^(?<subdomain>.+?)\.(?<domain>.+)$;

ターミネータとしてスペースまたはセミコロンを使用して FreeTextLiterals を使用しています

var serverNamevalue = new FreeTextLiteral("serverNameValue", FreeTextOptions.None, " ", ";");

次に、MakePlusRule を使用して、1 つ以上の server_name 値を取得しています。

httpCoreServerName.Rule = "server_name" + httpCoreServerNameItems + semicolon;
httpCoreServerNameItems.Rule = MakePlusRule(httpCoreServerNameItems, serverNamevalue);

ただし、この場合、FreeTextLiteral のターミネータとして空白を使用することに問題があると思います。これを実行すると、パーサー エラーが発生します。空白をターミネータとして機能する別の特定の文字に置き換えると (また、これを MakePlusRule の呼び出しで区切り文字に追加すると)、正常に動作します。

Ironyでこれをどのように処理できるかについて、誰かアイデアがありますか?

4

1 に答える 1