Есть ли способ в Rascal для генерации синтаксического определения грамматики из соответствующего типа данных? - PullRequest
0 голосов
/ 30 апреля 2018

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

так из экземпляра этого:

data Grammar = \grammar(set[Symbol] starts, map[Symbol sort, Production def] rules);

Примерно так:

start syntax E 
    = E "+" T
    | T
    ;

syntax T
    = T "*" F
    | F
    ;

syntax F
    = "(" E ")"
    | "a"
    ;

1 Ответ

0 голосов
/ 30 апреля 2018

Да, утилиту можно найти в 'lang :: rascal :: format :: Grammar'

'grammar2rascal' форматирует всю грамматику как негодяйскую программу, которая определяет ту же грамматику.

topProd2rascal отображает одно правило обратно в его конкретное определение в негодяйской нотации.

...