Как разобрать 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#?

0 ответов

Другие вопросы по тегам