1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/bupt_xyg-RainbowLexer

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

RainbowLexer

Описание 📃

RainbowLexer — это конфигурируемый лексический анализатор 💾
RainbowLexer принимает описание правил, которое он может распознать в документах с расширением .RL [.RL файл 📃]
RainbowLexer может использовать правила, описанные в этих файлах, чтобы проанализировать ваш целевой файл
RainbowLexer также может скомпилировать C-файл, содержащий код на C для анализа документов, описанных в этих файлах.

Содержание

type union index_series;
// Примечание:
// type — это статическое слово или разделитель
//   статическое слово type — это sw/staticWord
//   разделитель type — это sp/seperator
// union — это объединение слов
// index_series — это серия индексов
//   Например, [1,2,3,4] соответствует четырем лексемам с ID  Yöntem 1, 2, 3, 4 соответственно
//       [4:] указывает на любое количество лексем с ID, начиная с 4 и увеличивающимся
//       [:4] указывает на любое количество лексем с ID, начиная с 4 и уменьшающимся
//       [:] указывает на любое количество лексем с ID, начинающихся с 0 и увеличивающихся
//       IGNORE указывает на то, что данная лексема не будет добавлена в список результатов

Пример

sw {"hello", "world", "test", "hel"} [1,2,3,4];
sw {"dididi", "hahaha", "ppp", __VAR__} [4:];
sp {"%", "/", "*"} [20:];
sp {" ", "\n", "\t"} IGNORE;
}

Важно отметить, что каждая лексема должна быть заключена в "" Некоторые уже определенные наборы слов предоставляются:

  • VAR — универсальный набор допустимых имен переменных
  • NUMBER — универсальный набор допустимых чисел
  • STRING_DOUBLE — универсальный набор двойных кавычек, окружающих строки
  • STRING_SINGLE — универсальный набор одинарных кавычек, окружающих строки Если вы хотите сослаться на эти наборы слов, используйте {} для их включения в описанииДля одного слова можно использовать более короткую запись:
type "token" id

Использование

Используется в командной строке
Список параметров:

  • -D [file.RL] >> режим отладки (не компилируется, позволяет анализировать построчно или читать файл)
  • -C file.RL >> режим компиляции (скомпилирует file.RL в outputfile.c)

Инструкция по компиляции файла

В компилированном C-файле содержится три интерфейса:

  1. (void)RainbowLex(const char* string) — анализирует строку string
  2. (token*)RainbowNext() — последовательно возвращает один объект token, содержащий (id[size_t], token[char*])
  3. FINAL() — завершает анализ, отказываясь от всех объектов token

Разработческое руководство

Оставлено пустым

Открытое заявление

Лицензия MIT> Copyright (c) 2020-ГоуЦзи

Данное программное обеспечение и связанные с ним документы («Программа») предоставляются бесплатно любому лицу, которое получило копию Программы, с правом использовать Программу без ограничений, включая использование, копирование, модификацию, объединение, публикацию, распространение, предоставление sublicense и/или продажу копий Программы, а также возможность лицам, которым данная Программа была предоставлена, делать то же самое, при условии выполнения следующих условий:

Вышеуказанное уведомление об авторском праве и это уведомление о лицензии должны быть включены во все копии или значительные части Программы.

ПРЕДМЕТНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЯ, ГАРАНТИЯМИ ТОРГОВЛЕНИЯ, ПРИГОДНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ И НЕНАРУШЕНИЯ ПРАВ. В НИКАКОМ СЛУЧАЕ АВТОРЫ И ДОЛЖНИКИ АВТОРСКИХ ПРАВ НЕ ДОЛЖНЫ БЫТЬ УЧТЕНО В ЛЮБОМ ТРЕБОВАНИИ, УЩЕРБЕ ИЛИ ДРУГИХ ОТВЕТСТВЕННОСТИ, ВОЗНИКШИХ ИЗ ДЕЙСТВИЯ КОНТРАКТА, ДЕЛИКТА ИЛИ ДРУГОГО, ВОЗНИКШИХ ИЗ, ВЫПУСКА, ИЛИ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ДРУГИХ СДЕЛОК С ЭТИМ ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.

Помощь

Если вы столкнулись с проблемами при использовании RainbowLexer, вы можете найти решения здесь или в разделе issues.

  • ГоуЦзи (оригинальный автор)

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления (3)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/bupt_xyg-RainbowLexer.git
git@api.gitlife.ru:oschina-mirror/bupt_xyg-RainbowLexer.git
oschina-mirror
bupt_xyg-RainbowLexer
bupt_xyg-RainbowLexer
master