Поддержка C++ в парсере

Issue #245 new
Former user created an issue

Originally reported on Google Code with ID 245

Сейчас в силу приоритета скорости не будет реализована часть возможностей, которая должна
быть реализована в будущем.

Сейчас нет и пока не будет следующих возможностей?
1) Шаблоны - очень много конфликтов
2) Выражения в скобках - конфликтуют со сверткой типов

Список будет пополняться по возможности.

Reported by mamontov.dp on 2013-11-07 04:58:43

Comments (13)

  1. Oleg Sychev repo owner
    1) Шаблоны реализовать со списком типов (включая вложенные подшаблоны) - это нужно,
    использование констант и выражений при создании объекта от шаблона не реализовывать
    - конфликты порождает именно оно ведь?
    2) ну я надеюсь вы все скобки не собираетесь отменить? Тип в скобках можно допустить
    - включая использование ключевого слова class; просто id в скобках можно запретить
    - конфликты создает оно...
    
    "Список будет пополняться по возможности." - лучше бы по необходимости, чем по возможности
    ;)
    

    Reported by oasychev on 2013-11-07 11:52:28

  2. Oleg Sychev repo owner

    Reported by oasychev on 2013-11-07 22:35:27 - Labels added: Component-WritingCompetently

  3. Oleg Sychev repo owner
    Фиксированный парсер на С++ давно уже пора сделать! От него зависит многое, в том числе
    и реализация алгоритмов обработки дерева - на чем с ними работать?!
    
    Во-первых, можно написать основную грамматику и текстовые описания для нее с плейсхолдерами
    (плюс примеры генерации описаний узлов) и показать мне на консультации - заодно ваши
    вопросы по статьям уточняться.
    
    А потом уже доделывать настройку с настраиваемым (или плавающим) стартовым символом
    и возвращением группы кустов вместо дерева когда не собирается...
    

    Reported by oasychev on 2013-11-27 21:40:37 - Labels added: Priority-Critical - Labels removed: Priority-Low

  4. Former user Account Deleted
    Шаблоны реализованы через список типов и C-style typecast. реализован через хак с символьной
    таблицей.
    

    Reported by mamontov.dp on 2013-12-16 16:53:48

  5. Oleg Sychev repo owner
    Что-то я в коммитах ничего такого не вижу...
    

    Reported by oasychev on 2013-12-16 18:10:46

  6. Former user Account Deleted
    Я пока не коммичу эту часть, ибо, возможно она потребует каких-либо изменений в самом
    своем коде.
    По делу: goto оставляю также на потом, однако break остается для реализации switch.
    

    Reported by mamontov.dp on 2013-12-16 18:34:03

  7. Oleg Sychev repo owner
    break и continue лучше оставить.
    

    Reported by oasychev on 2013-12-16 18:38:29

  8. Oleg Sychev repo owner
    в смысле сделать сейчас.
    

    Reported by oasychev on 2013-12-16 18:38:50

  9. Oleg Sychev repo owner
    ну и пускай будут изменения закоммичены отдельными коммитами потом с объяснением, зачем
    они взялись; всяко лучше чем отдельный огромный коммит с комментом типа "сделано xxxx"
    

    Reported by oasychev on 2013-12-16 19:12:58

  10. Former user Account Deleted
    Хорошо, в ближайшее время закоммичу. Break и Continue остаются - они никаких конфликтов
    не вызывают. Еще может еще раз гляну - goto, может получится оставить.
    

    Reported by mamontov.dp on 2013-12-16 20:21:53

  11. Oleg Sychev repo owner
    Надо будет если потребуется поменять заголовок функции парсинга и уточнить настройки
    в processed_string.
    
    Нам нужна функция парсинга, которая могла бы принимать следующие параметры
    1) тип ожидаемого стартового состояния (с вариантом типа any если любое годится)
    2) при невозможности свернуть в дерево со стартовым состоянием на конце, выдавать ли
    в ответ "куст" (как понадобится syntax_analyzer в cw) или сообщения о синтаксических
    ошибках (как понадобится например на форме редактирования cw если преподаватель ввел
    строку с ошибкой)
    
    Мне переработать заголовок или сами сделаете?
    

    Reported by oasychev on 2014-01-17 15:30:45

  12. Former user Account Deleted
    Мы уже говорили на эту тему стартовых состояний - парсер сам сворачивает насколько может
    все, что к нему пришло. Оказалось, что пока они не нужны. Сейчас нужен только флаг
    указывающий на то, нужен ли нам полностью корректный разбор или куст нас устроит (ибо
    куст не устраивает при анализе ответа преподавателя).
    
    Что возвращать в случае установленного этого флага - неизвестно, пока не придумал.
    

    Reported by mamontov.dp on 2014-01-20 06:22:48

  13. Oleg Sychev repo owner
    Куст это массив корневых вершин.
    
    При наличии ошибок возвращается список ошибок (отдельной функцией), по возможности
    строится дерево в котором есть вершины-ошибки (тут надо думать, с регексами в этом
    плане проще - но если не получится с ходу, пусть не строится - не страшно) - посмотрите,
    как это устроено в preg_regex_handler - вполне удобно. Есть отдельные классы для ошибок
    парсера...
    

    Reported by oasychev on 2014-01-21 20:02:19

  14. Log in to comment