Простая грамматика ParseKit для HTML с заменяющими переменными

Для приложения iOS я хочу проанализировать HTML-файл, который может содержать переменные стиля UNIX, для замены. Например, HTML может выглядеть так:

<html>
  <head></head>
  <body>
    <h1>${title}</h1>
    <p>${paragraph1}</p>
    <img src="${image}" />
  </body>
</html>

Я пытаюсь создать простую грамматику ParseKit, которая предоставит мне два обратных вызова: один для сквозного HTML, а другой для переменных, которые он обнаруживает. Для этого я создал следующую грамматику:

@start        = Empty | content*;

content       = variable | passThrough;
passThrough   = /[^$]+/;
variable      = '$' '{' Word closeChar;

openChar      = '${';
closeChar     = '}';

У меня есть как минимум две проблемы: для переменной я изначально объявил ее как openChar Word closeChar , но это произошло не работает (до сих пор не знаю почему). Вторая проблема (и более важная) заключается в том, что анализатор останавливается, когда находит (т.е. переменную внутри строки в кавычках).

Мои вопросы:

  1. Как я могу изменить грамматику, чтобы она работала должным образом?
  2. Лучше ли использовать токенизатор? В таком случае, как мне его настроить?
5
задан pgb 15 February 2012 в 18:28
поделиться