Отображение символов в синтаксическом дереве

Issue #229 closed
Oleg Sychev repo owner created an issue

Originally reported on Google Code with ID 229

Текущая ситуация имеет две проблемы:
1) все символы берутся в квадратные скобки, что некрасиво и неудобно для пользователя
2) везде в тултипах charset на листьях, хотя бы там и был один символ - хотя один символ
не set!

Нужна новая система показа.
Мое мнение:
0) в узлах-прямоугольниках всегда пишутся символы, с которым он может совпасть - без
бекслешей и т.д.
1) выделить простые ассерты - особенно ^ и $ - другой фигурой, чем прямоугольник, можно
также цвет побледнее сделать; продолжаем логику вид узла показывает цвет фигуры; в
простых ассертах типа \b \A и т.д. бекслеши остаются - тут они часть написания, а не
эскейпинг;
2) вместо точки сделать надпись типа any character, голубую - как и space например;
саму точку голубым выделять малозаметно; но здесь форма - прямоугольник, она того же
типа, что и символы
3) в случае символьных классов нужна тоже обработка - снимать лишние бэкслеши, если
^ первая - превращать ее в надпись типа any character except ... и т.д.  Надписи опять
же все голубым, символы - черным.

Какие еще моменты возникают, пишите, подумаем.

Reported by oasychev on 2013-09-20 18:57:41

Comments (13)

  1. Valeriy Streltsov
    Мое мнение - не стоит делать другие фигуры для ассертов; как-то мешает восприятию. Так
    есть операнды и операторы (прямоугольники и эллипсы), а так будет непонятно что. Лучше
    уж выделять цветом вместо формы...
    

    Reported by vostreltsov on 2013-09-22 10:55:16 - Status changed: InProgress

  2. Former user Account Deleted
    1) предлагаю либо поменять стиль узла, либо цвет текста в узле. Изменил формы узлов,
    пример во вложенном файле. Хотелось бы избежать изменения форм, согласен по этому поводу
    с Валерием.
    Против выделения цвета фоном, потому что:
    а) если выделить слабо, то на проекторе и при печати не будет видно;
    б) если выделить сильно, то будут проблемы как и с объясняющем графом, текст будет
    сливаться.
    2) сделано, вытолкнул.
    
    Пишу задачи для себя:
    4) выделение простых ассертов (предлагаю использовать стиль узла "dashed");
    5) выделение модификаторов (предлагаю использовать стиль узла "rounded");
    6) выделение узлов, которые появляются в дереве при выборе параметра exact matching
    (предлагаю использовать стиль узла "bold", что заставить пользователь обратить внимание
    на узлы).
    
    Список стилей можно посмотреть в самом низу здесь: http://www.graphviz.org/doc/info/attrs.html
    

    Reported by grvlter on 2013-09-22 11:18:55

  3. Oleg Sychev reporter
    Так будут по форме операторы, захватывающие операнды и незахватывающие операнды. Не
    так уж плохо... Или тогда цвет им бледный что-ли делать?
    Использовать dashed для простых ассертов можно ТОЛЬКО если выделение будет зеленым
    прямоугольником, иначе очень похоже на выделение.
    
    Я бы rounded использовал для обратных ссылок, чтобы было ближе к округлым очертаниям
    подвыражения  (кстати, не вывести ли на дереве номер и имя подвыражения - а то для
    обратной ссылки есть, а для того, на что ссылается - нет...)? А для опций - хоть диагональный
    стиль.
    
    Фоном предлагаю выделить зону из добавленных exact matching узлов- серый фон считался
    признаком неактивности очень давно.
    

    Reported by oasychev on 2013-09-22 12:49:55

  4. Former user Account Deleted
    Забыл вложить файл в последнее своё сообщение...
    

    Reported by grvlter on 2013-09-22 16:56:07

    <hr> * Attachment: test.PNG<br>test.PNG

  5. Oleg Sychev reporter
    Во-первых, не понял надписи типа "начало объекта ассерта" - это что значит?
    
    Во-вторых, не нравится круг на (?i) - легко спутать с эллипсом оператора, надо что-нибудь
    более отличное от
    

    Reported by oasychev on 2013-09-22 17:51:36

  6. Oleg Sychev reporter
    Я бы сделал так. Убрал из дерева большую часть надписей, исключение - для any character
    (точка), а также space и других неотображаемых символов типа табуляции. Подробные надписи
    выносятся в тултипы, зато там они должны быть уже подробными - чего на (?i) написано
    modifier? Какой modifier, к чему? Первая строка тултипа может расшифровывать тип узла,
    последующие - его значение - так это делают чарсеты сейчас, насколько я понимаю.
    
    Все остальное показывал бы знаками - главным образом формой, иногда видом окантовки.
    По цвету и dashed я написал свое мнение в комментарии 3.
    

    Reported by oasychev on 2013-09-22 19:18:35

  7. Former user Account Deleted
    0) готово. \ сохранился только для \xnnn;
    1, 4) сделал стиль узла "dashed";
    3) все требования учтены + если символ одиночный, то в tooltip будет написано "charcter
    "+имя символа;
    5) для опций применён диагональный стиль;
    

    Reported by grvlter on 2013-09-23 16:15:42

  8. Oleg Sychev reporter
    Во-первых, надо разобраться с тултипами: они должны содержать всю подробную информацию
    об узле. Сейчас например для тех же модификаторов там ничего подробного.
    
    С другой стороны, громоздкие надписи типа узла - для ассертов, обратных ссылок и т.д.
    - надо вынести в тултипы. И писать понятным образом - start of subject assertion если
    кто и поймет, так ему дерево врядли нужно будет. Напишите типа "начало строки" и по
    английски тоже - граф по-моему лучше писал. Кроме того, надо бы уже учесть разницу
    между \A и ^ и т.д
    
    На узлах подмасок надо добавлять их номера и (если есть) - имена. А то на обратной
    ссылке номер стоит, а на подмаске - нет.
    

    Reported by oasychev on 2013-09-23 20:30:41

  9. Oleg Sychev reporter
    На \W дерево падает; простые ассерты типа \A \z \Z должны отображаться с бекслешем.
    

    Reported by oasychev on 2013-10-08 15:15:37 - Status changed: InProgress

  10. Log in to comment