Как получить грамматику из parsetree в Rascal?

#html #syntax #grammar #rascal #parse-tree

#HTML #синтаксис #грамматика #негодяй #синтаксическое дерево

Вопрос:

Я довольно новичок в этом, но я начал кодировать Rascal и застрял надолго. Я пытаюсь получить грамматику дерева синтаксического анализа, но, похоже, мне не удается ее восстановить.

Вы знаете желтые прямоугольники с грамматиками, когда вы наводите курсор мыши на дерево синтаксического анализа здесь? http://tutor.rascal-mpl.org/Recipes/Visualization/ParseTree/ParseTree.html#/Recipes/Visualization/ParseTree/ParseTree.html

Я хочу каким-то образом получить это. Я пытаюсь визуализировать parsetree в html. И я почему-то думаю, что лучше всего получить грамматику, а затем самому нарисовать дерево в html, или есть лучший способ сделать это?

Любая помощь приветствуется!!

Ответ №1:

Каждый узел дерева синтаксического анализа содержит представление каждого используемого грамматического правила. В библиотечном модуле Parsetree вы можете найти определение типа данных дерева. Каждое дерево синтаксического анализа имеет этот тип. У каждого appl термина есть a Production и список дочерних элементов типа list[Tree] .

Используя сопоставление с образцом или проекцию поля, вы можете получить эти данные и нарисовать свое дерево.

Вы можете найти пример кода в vis::ParseTree .

Также удобен модуль lang::rascal::format::Grammar , который имеет функции для точной печати грамматического правила обратно в нотации Rascal.