Как извлечь строку в кавычках ANTLR4 из CSS с использованием среды выполнения C ++ - PullRequest
1 голос
/ 14 апреля 2020

Я использую ANTLR4 и грамматику CSS от https://github.com/antlr/grammars-v4/tree/master/css3. В основном это работает, но у меня возникают проблемы, когда я использую строки в кавычках в CSS. Например, со следующими CSS

.b1
{
  font-family: "Gill Sans", serif;
}

я хотел бы извлечь «Gill Sans» и «serif», оба без кавычек. Когда кавычки используются вокруг строки, парсер генерирует KnownTermContext, который затем имеет метод String(), который возвращает antlr4::tree::TerminalNode*. Метод getText() этого возвращаемого объекта возвращает строку, включая кавычки. Кажется, что String() допустимо только в том случае, если строка заключена в кавычки, поэтому теоретически я мог бы вручную удалить кавычки в этом случае, но, похоже, это не нужно, если используется синтаксический анализатор, такой как ANTLR.

Есть ли способ извлечь строку с удаленными кавычками или в этом случае вызывающий может удалить кавычки?

1 Ответ

0 голосов
/ 14 апреля 2020

[...] или в этом случае звонящий может удалить кавычки?

Да, это правильно. В ANTLR нет способа убирать символы из токенов (без указания целевого кода c). Это можно сделать при обходе дерева разбора в слушателе или посетителе.

...