Описание тега rascal

Rascal - это экспериментальный предметно-ориентированный язык для метапрограммирования, такого как статический анализ кода, преобразование программ и реализация предметно-ориентированных языков. Он включает примитивы из реляционного исчисления и переписывания терминов. Его синтаксис и семантика основаны на процедурном (императивном) и функциональном программировании.
0 ответов

Java AST в.java файл Rascal

Мне интересно, есть ли механизмы для перевода из Java AST обратно в исходный файл Java внутри библиотеки lang::java::m3. Спасибо!
16 мар '15 в 19:26
1 ответ

Ошибка при использовании негодяйской грамматики Java15

Я попытался проанализировать некоторый код Java, используя грамматику Java15 Rascal. Однако он не принимает объявление локальной переменной параметризованных типов. Более подробно: это не признает List<String> files = ... это признает final Li…
05 окт '16 в 23:10
1 ответ

Ошибка неоднозначности при рендеринге дерева разбора

В Rascal, при рендеринге дерева разбора на неоднозначной грамматике, почему я иногда получаю сообщение об ошибке с указанием "Неоднозначность" в каком-то месте, а не Rascal просто рендеринг леса разбора и показ неоднозначности? Я всегда просто звоню…
29 июн '16 в 06:47
1 ответ

Как я могу создать список из нескольких совпадений с регулярными выражениями в Rascal?

У меня есть str значение, содержащее достаточное количество текста, и я сопоставляю его с регулярным выражением. str содержит несколько совпадений регулярного выражения, но, конечно, я получаю только первое. Как я могу перечислить по другим матчам, …
07 дек '15 в 22:19
1 ответ

Мошенническая метамодель

Включает ли метамодель Rascal представление информации о системе управления версиями и информацию о трекере ошибок, аналогично той, которая была предложена для FAMIX Antoniol et al.?
27 фев '14 в 21:37
2 ответа

Доступ к поддереву регулярного выражения в parsetree

У меня есть следующий модуль Rascal: module foo import IO; import ParseTree; extend lang::std::Layout; lexical CHAR = [ab]; start syntax CharList = CHAR hd (',' CHAR)+ tl ';'; Мой вопрос заключается в том, как добраться до отдельных элементов tl час…
14 окт '15 в 11:26
1 ответ

Изменение синтаксиса Java

Я хочу использовать существующий Java AST от Rascal, предоставляемый в библиотеке m3, но я хотел бы расширить его, чтобы добавить некоторые функции. Мы работаем с Java-подобным языком (около 95% Java и 5% наших специфических функций). В идеале я хот…
11 авг '15 в 14:15
1 ответ

Парсинг комментария в мошеннике

У меня очень простой вопрос о разборе фрагмента, содержащего комментарий. Сначала мы импортируем мой любимый язык, Пико: import lang::pico::\syntax::Main; Затем мы выполняем следующее: parse(#Id,"a"); дает, как и ожидалось: Id: (Id) `a` Тем не мение…
22 мар '16 в 08:38
1 ответ

Определение типа данных кортежа неизвестной длины в Rascal

Мне было любопытно узнать, можно ли определить тип данных, который мы знаем, должен быть кортежем, но чья длина (или количество элементов неопределяема) в настоящее время. Приложение выглядит следующим образом: //I want to declare a data type, one o…
22 янв '15 в 18:27
2 ответа

Почему ошибки статического типа в этом примере кода сообщаются только во время выполнения Rascal?

Согласно документации Rascal, язык статически типизирован. Однако ошибки типа сообщаются только во время выполнения. Например, когда я создаю этот модуль, я ожидаю ошибку типа, потому что я присваиваю переменную типа int: module Example void example…
23 апр '13 в 08:45
1 ответ

Использовать шаблон для привязки к параметрам конструктора при посещении узлов в Rascal

Я пытаюсь сделать визит сверху вниз по алгебраическому типу данных. Когда я нахожу узел определенного типа, я также хотел бы привязать к узлам этого конкретного узла, например, data Script=script(list[Stmt] body | ... data Stmt =exprstmt(Expr expr)|…
05 ноя '14 в 19:40
1 ответ

Оценивая производительность Rascal?

Я хочу оценить производительность Rascal для данной системы переписывания, которую я написал. Мне интересно, есть ли хороший способ сделать это? В идеале я бы сгенерировал некоторые скомпилированные классы Java из системы, а затем запустил их вручну…
05 июл '17 в 21:38
0 ответов

Негодяи ловят исключения во время выполнения

Попытка перехватить исключение утверждения с помощью сообщения. Обнаружил ошибку после некоторых надоедливых сбоев. Не особенно любил, почему следующее сообщение было сгенерировано, вместо того, чтобы просто сказать пользователю, что он / она забыл …
02 мар '15 в 15:30
1 ответ

Ланг модули в Rascal Shell

Есть некоторый код, который использует модули от lang, все отлично работает в консоли Rascal в Eclipse, но когда я пытаюсь импортировать его (import lang::java::jdt::m3::Core;) в rascal-shell.jar выдает ошибку об отсутствующем пути поиска. rascal&gt…
05 дек '15 в 20:47
1 ответ

Как сделать "указатели на функции" в Rascal?

Поддерживает ли Rascal указатели на функции или что-то в этом роде, например Java Interfaces? По сути, я хочу извлечь конкретную (изменяющуюся) логику из общего логического блока в виде отдельных функций. Используемая функция передается в общий блок…
06 дек '14 в 18:43
1 ответ

Как найти то, что включено в аннотацию @containment?

Как найти то, что включено в аннотацию @containment? Я не могу найти это в документации онлайн, которая относится только к грамматике и ничего более? Я говорю о попытке получить информацию / факты из модели M3.. В качестве примера: схема =="java+ пе…
19 фев '15 в 18:00
1 ответ

Почему [1..5] в Rascal возвращает [1,2,3,4]?

Я ожидаю, что он вернется [1,2,3,4,5], как в Haskell.
05 сен '13 в 10:00
1 ответ

Пример Rascal-MPL для анализа кода C90

Я играл с некоторыми примерами PICO и Java для статического анализа в Rascal-MPL, но я не нашел примеров для C (C90). Я заметил, что есть "lang::c90::\syntax::C", но я не нашел примеров, как его использовать.
16 ноя '16 в 22:02
1 ответ

Почему отсутствие явного объявления типа в параметре работает, когда функция используется напрямую, а не когда она передается другой функции?

Определите эту функцию в вашем модуле: module Data int inc(x) = x + 1; Введите это в консоли: rascal> import Data; rascal> import List; Это работает: rascal> inc(1); int: 2 Но это не так: rascal> list[int] y = [1,2,3]; rascal> mapper(…
28 янв '15 в 11:14
2 ответа

Rascal Использование модуля веб-сервера

В настоящее время я работаю над стабильной версией Rascal и хочу создать веб-сервер Rascal для обслуживания моих html-шаблонов функциями javascript. Глядя на модуль веб-сервера, я не вижу, как использовать функцию serve для использования веб-сервера…
08 дек '16 в 15:52