Nano Hash - криптовалюты, майнинг, программирование

Используйте лексер pygments с целью antl python

Сам Теренс Парр говорит об antlr3: «К сожалению, создать токенизатор с помощью ANTLR по-прежнему кажется сложнее, чем с традиционным lex-подобным подходом». В то время как у pygments есть лексеры практически для любого языка, о котором вы только можете подумать: http://pygments.org/languages/

Кто-нибудь пробовал использовать лексер pygments с целью antlr python? У antlr2 был пример использования flex с целью cpp, к сожалению, для antlr3 таких примеров нет.
Могу ли я просто вручную написать файлgramname.tokens, который может импортировать парсер antlr? Когда я использую лексер antlr, появляется куча анонимных токенов, могу ли я просто удалить их? В качестве альтернативы, возможно, pygments можно изменить, чтобы принять файл antlr .tokens для своих токенов. Поток токенов pygments просто должен реализовать интерфейс потока токенов antlr.

05.09.2011

Ответы:


1

Навин написал:

Кто-нибудь пробовал использовать лексер pygments с целью antlr python?

Я сомневаюсь. По крайней мере, я никогда не видел, чтобы кто-нибудь упоминал об этом ни здесь, на SO, ни в списках рассылки ANTLR (которые я отслеживаю уже довольно давно).

Навин написал:

Могу ли я просто вручную написать файлgramname.tokens, который может импортировать парсер antlr?

Нет. Парсер ожидает экземпляр объекта Lexer, который присутствует в среде выполнения (Python). Файл .tokens нельзя редактировать вручную.

Навин написал:

Когда я использую лексер antlr, появляется куча анонимных токенов, могу ли я просто удалить их?

Не совсем уверен, что вы имеете в виду, но удаление любого сгенерированного кода кажется мне плохой идеей. Если вы имеете в виду файл .tokens, как я упоминал ранее, его нельзя редактировать вручную.

Я действительно не стал бы пытаться «приклеить» какую-то внешнюю грамматику лексера или полный лексер в ANTLR. Я почти уверен, что это потребует от вас больше времени для реализации, чем просто написать грамматику лексера ANTLR самостоятельно. В конце концов: определение правил лексера в большинстве случаев является самой простой частью языка.

05.09.2011
  • Спасибо за Ваш ответ. Определение правил лексера должно быть простым, к сожалению, это не так с antlr и некоторыми языками. Вам действительно нужно намного больше магии даже для лексеров, и pygments решил проблему, я думаю. Кроме того, файл .tokens - это просто словарь, я не знаю, почему я не могу ткнуть в него, чтобы адаптировать другой лексер. В любом случае, я попробую сам. 05.09.2011
  • Навин, изменение файла .tokens никак не повлияет на ваш лексер. И какие языки так сложно токенизировать? 06.09.2011

  • 2

    этот другой вопрос был очень полезен: ANTLR Parser с ручным лексером также прочитайте фрагменты stax и jflex: http://www.antlr.org/wiki/display/ANTLR3/Interfacing+StAX+to+ANTLR http://www.antlr.org/pipermail/antlr-interest/2007-October/023957.html

    файл маркеров не является проблемой, если вы импортируете типы маркеров из сгенерированного файла анализатора. К сожалению, я сначала попытался проанализировать файл .tokens и забыл преобразовать типы токенов в целые числа, что вызвало долгий поиск ошибок...

    но я, наконец, понял это: я понял это: http://github.com/tinku99/antlr-pygments

    25.10.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..