Идея «сетки символов» для доступа к отдельным символам выглядит как фундаментальный шаг;
другой ответ показывает, как это сделать просто отлично. Теперь вы можете получить доступ к сетке случайным образом и легко следовать горизонтальным или вертикальным линиям.
Настоящая проблема в том, что вы хотите построить график, отражающий то, что говорит сетка символов. Такой граф будет состоять из (дух), узлов, дуг и аннотаций.
Вероятно, проще всего найти узлы, которые, вероятно, обозначены (см. Другой ответ) символами, представляющими точки ветвления на диаграмме (например, + ). Каждая дуга будет строкой символов, ведущих к изгибу дуги или к другому узлу. Следование таким строкам символов должно быть довольно простым (:-)) и может создать строку, представляющую дугу, даже если в ней есть изгибы.
Скорее всего, вы захотите перечислить все узлы (просто отсканируйте массив). Узловые аннотации
должно быть разумно находиться поблизости, и вы можете просто сканировать небольшой радиус вокруг местоположения узла.
Вы захотите перечислить каждую дугу, покидающую узел, и собрать строку, представляющую дугу.
Я бы подал струну дуги лексеру, чтобы разорвать его; он может иметь интересный контент (например, аннотацию в виде встроенной последовательности символов).
На данный момент у вас есть узлы и дуги со связанными аннотациями. Построить соответствующий граф из них должно быть довольно легко.