Пользовательский парсер, как сделать условный зачет? - PullRequest
2 голосов
/ 18 февраля 2012

У меня есть свой собственный шаблонизатор. Он может конвертировать переменную следующим образом:

html html html (=array.value) html html

с чем-то вроде этого (используя регулярное выражение):

html html html $array['value'] html html

Теперь я смогу использовать условное утверждение. Что-то вроде:

html html html
(if (condition))
 (=array.value)
(endif)
html html html

Как я могу сделать такой парсер без использования eval?

1 Ответ

1 голос
/ 18 февраля 2012

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

Но если вы хотите делать что-то вроде (=array.value), вам, вероятно, нужно кодировать свой собственный язык мини-сценариев.

Хотя это не совсем такСвязанный с PHP / HTML, я нашел это довольно полезным, чтобы понять, что на самом деле делают компиляторы / парсеры / лексеры.

Или, как вы упомянули, просто используйте php и evalэто самый простой способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...