Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Используйте нечувствительные к регистру ключевые слова в Rascal (обходной путь)

Автор вопроса: Olav TrauschkeОтветов: 1

Кто-нибудь знает, как я могу зарезервировать ключевое слово без учета регистра в Rascal?

Из-за проблемы № 968, как сообщается на GitHub (https://github.com/usethesource/rascal/issues/968) Я не могу просто использовать одинарные кавычки. Вероятно, этот вопрос будет решен. поскольку в настоящее время я работаю с языком, в котором ключевые слова не чувствительны к регистру, и пытаюсь проанализировать код, в котором кто-то явно случайным образом применил верблюжий регистр или все заглавные буквы в ключевых словах, я ищу обходной путь. Пока я просто определяю каждое ключевое слово тремя способами. Поскольку в применении верблюжьего регистра есть ошибки (например, GroupbyGroup, которая должна была быть GroupByGroup в верблюжьем регистре), мне все время приходится переопределять ключевые слова еще более разными способами. Поэтому я надеялся, что кто-нибудь узнает о лучшем обходном пути (или, очевидно, сможет решить эту проблему).

case-insensitivekeywordrascal

Ответы

Ответ 1 · рейтинг 1 · Davy Landman

Следующая грамматика автоматически расширяется, чтобы определить, что означает 'abc'

lexical CaseInsensitive = 'abc';

вот так:

lexical CaseInsensitive = 'abc';
lexical 'abc' = [aA][bB][cC];

Вы можете сделать это и самостоятельно для своей грамматики, но это не изменит семантику устранения неоднозначности. Нотация \ просто еще не вычитает обычные языки, сгенерированные [aA][bB][cC], из контекстно-свободного языка. Это не реализовано.

Хорошим временным решением было бы сохранить неоднозначность грамматики и использовать мошеннический код для фильтрации правильного дерева.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы