A parser for regular expressions in PHP?

Отражение - то, что Вы хотите. Отражение + TypeConverter. Не имейте намного большего количества времени, чтобы объяснить, но просто погуглить тех, и необходимо хорошо быть на пути. Или Вы могли просто использовать xml сериализатор, но тогда необходимо придерживаться формата, но работает отлично.

22
задан Jan Fabry 4 January 2011 в 13:31
поделиться

1 ответ

Что вам нужно, так это грамматика и способ ее создания. Самый простой подход к созданию синтаксического анализатора - это кодирование рекурсивного спуска непосредственно на вашем целевом языке (например, в PHP), в котором вы создаете чистый синтаксический анализатор, который по форме точно соответствует вашей грамматике (что делает синтаксический анализатор также обслуживаемым).

Много подробностей о том, как это сделать, если у вас есть грамматика, приведены в моем SO описании того, как создавать парсеры рекурсивного спуска и , дополнительные детали теории здесь

Что касается грамматик регулярных выражений, то простая грамматика (может быть, не та, которую вы имели в виду):

REGEX =  ALTERNATIVES ;
ALTERNATIVES = TERM ( '|' TERM )* ;
TERM = '(' ALTERNATIVES ')' |  CHARACTER | SET | TERM ( '*' | '+' | '?' ) ;
SET = '~' ? '[' ( CHARACTER | CHARACTER '-' CHARACTER )* ']' ;
CHARACTER = 'A' | 'B' | ... | '0' ... '9' | ...  ;

Анализатор рекурсивного спуска, написанный на PHP для обработки этой грамматики, должен быть порядка несколько сотен строк, макс.

Учитывая это как отправную точку, вы должны быть в состоянии добавить функции PHP Regexes к нему.

Приятного разбора!

3
ответ дан 29 November 2019 в 05:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: