Как разобрать Dot BNF с Eto.Parse?
Скажем, у нас есть такой файл.bnf, который описывает язык Dot (Graphviz).
Мы можем попытаться проанализировать простой граф с помощью Eto следующим образом:
// https://github.com/picoe/Eto.Parse
// https://github.com/awalterschulze/gographviz/blob/master/dot.bnf
using System;
using System.IO;
using Eto.Parse.Grammars;
using ServiceStack.Text;
namespace MathModelDemo
{
class Program
{
static void Main()
{
var grammarRools = File.ReadAllText("./dot.bnf");
var grammar = new EbnfGrammar(EbnfStyle.Iso14977).Build(grammarRools, "DotGraph"); // same with new BnfGrammar().Build(grammarRools, "DotGraph");
var input = @"
digraph G {
subgraph cluster_0 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
a0 -> a1 -> a2 -> a3;
}
subgraph cluster_1
{
node [style=filled];
b0 -> b1 -> b2 -> b3;
color=blue
}
start -> a0;
start -> b0;
a1 -> b3;
b2 -> a3;
a3 -> a0;
a3 -> end;
b3 -> end;
start[shape = Mdiamond];
end[shape = Msquare];
}
";
var match = grammar.Match(input);
var outS = match.Dump();
Console.WriteLine(outS);
}
}
}
Тем не менее он не может прочитать.bnf - не удается в первой строке комментария.
Как читать Dot из грамматики BNF, используя Eto в C#?