Я пишу парсер для скриптового языка программирования в PHP. Синтаксис этого языка сценариев выглядит следующим образом:
ZOMFG
&This is a comment
(show "Hello, World\!");
Это страница, написанная на этом языке и отображающая Hello, World! в браузере. Но я мог бы также иметь такой код:
ZOMFG
&This is a comment !
on multiple !
lines.
(show !
"Hello, !
World\!!
");
Сейчас я использую explode("\n", $content)
, чтобы разбить содержимое страницы на массив, в котором каждая строка кода находится в отдельном индексе.
Так
ZOMFG
&This is a comment
(show "Hello, World\!");
становится:
array('ZOMFG', '&This is a comment', '(show "Hello, World\!");');
Когда строка заканчивается на! (кроме случаев, когда символ! экранируется как \!), он должен добавить эту строку, включая следующую строку в массив, как один отдельный элемент. Так
&This is a comment !
on multiple !
lines.
становится
&This is a comment on multiple lines.
Кто-нибудь знает, как это сделать?