Разбор строк с помощью JavaCC

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

Мой идентификатор и числовой токен выглядят следующим образом:

<IDENTIFIER: (["a"-"z", "A"-"Z"])+>
<NUMBER: (["0"-"9"])+>

Мой текущий токен строки:

<STRING: "\"" (<IDENTIFIER> | <NUMBERS> | " ")+ "\"">

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

Изначально у меня был такой метод в файле парсера:

variable=<INDENTIFIER> <ASSIGN> <QUOTE> message=<IDENTIFIER> <QUOTE>
{File.saveVariable(variable.image, message.image);}

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

Итак, я просто хотел бы получить совет о том, как я могу захватить строковые литералы. В частности, я хотел бы сделать такие строки, как:

" hello", "hello ", " hello " and "\nhello", "hello\n", "\nhello\n"

допустимо в моем синтаксисе.

5
задан 425nesp 9 August 2012 в 07:09
поделиться