Инструменты пользователя

Инструменты сайта


wiki:devel:parser:test:simple_test_lexer_notes

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
wiki:devel:parser:test:simple_test_lexer_notes [2025/01/16 17:18] – создано vladpolskiywiki:devel:parser:test:simple_test_lexer_notes [2025/01/16 18:36] (текущий) vladpolskiy
Строка 1: Строка 1:
 +======Заметка simple test lexer======
 Просто привожу быстрый пример, пока экспериментирую с Simple Tests Lexer. Если вам нужен инструмент для разбора какого-нибудь мини-языка в PHP , это хорошее место для поиска. Просто привожу быстрый пример, пока экспериментирую с Simple Tests Lexer. Если вам нужен инструмент для разбора какого-нибудь мини-языка в PHP , это хорошее место для поиска.
  
-Одним из побочных продуктов Simple Test является лексер на основе регулярных выражений, который можно найти в CVS здесь . Маркус использует его для построения HTML- парсера для Simple Test, но его можно применять практически к чему угодно. Обратите внимание, что есть отдельная версия лексера, доступная на Marcus SourceForge «code dump» - http://sf.net/projects/lamplib .+Одним из побочных продуктов [[wiki:devel:parser:test:simple_test|Simple Test]] является лексер на основе регулярных выражений, который можно найти в CVS [[http://web.archive.org/web/20070814083008/http://cvs.sourceforge.net/viewcvs.py/simpletest/simpletest/parser.php?rev=1.58&view=auto|здесь]]. Маркус использует его для построения HTML- парсера для Simple Test, но его можно применять практически к чему угодно. Обратите внимание, что есть отдельная версия лексера, доступная на Marcus SourceForge «code dump» - http://sf.net/projects/lamplib .
  
-Сейчас я вынужден исследовать его из-за необходимости. WACT разрабатывает шаблонное выражение/язык привязки данных, использование которого описано в Руководстве для авторов шаблонов . К сожалению, есть ошибка (эффекты описаны здесь ), которая, похоже, предполагает, что синтаксис PCRE в PHP изменился где-то между PHP 4.1.2 и 4.3.2.+Сейчас я вынужден исследовать его из-за необходимости. [[http://web.archive.org/web/20070814083008/http://wact.sourceforge.net/|WACT]] разрабатывает шаблонное выражение/язык привязки данных, использование которого описано в [[http://web.archive.org/web/20070814083008/http://wact.sourceforge.net/index.php/TemplateAuthorsGuide|Руководстве для авторов шаблонов]]. К сожалению, есть ошибка (эффекты [[http://web.archive.org/web/20070814083008/http://sourceforge.net/tracker/index.php?func=detail&aid=983454&group_id=85372&atid=575984|описаны здесь]]), которая, похоже, предполагает, что синтаксис PCRE в PHP изменился где-то между PHP 4.1.2 и 4.3.2.
  
 Рассматриваемое регулярное выражение: Рассматриваемое регулярное выражение:
Строка 15: Строка 16:
 Я не нашел никаких очевидных указаний на изменения в синтаксисе в руководстве PHP / CVS (любой вклад будет очень признателен). Это регулярное выражение также заставляет меня ломать голову (Джефф тоже ломает голову над этим), поэтому изучаю возможности более управляемого подхода к разбору языка выражений шаблонов. Я не нашел никаких очевидных указаний на изменения в синтаксисе в руководстве PHP / CVS (любой вклад будет очень признателен). Это регулярное выражение также заставляет меня ломать голову (Джефф тоже ломает голову над этим), поэтому изучаю возможности более управляемого подхода к разбору языка выражений шаблонов.
  
-В любом случае, если говорить коротко, вот очень простой пример использования Simple Tests lexer в качестве шаблонизатора, который может помочь кому-то начать. Дополнительные примеры лучше всего искать, изучая тестовые случаи парсера .+В любом случае, если говорить коротко, вот очень простой пример использования Simple Tests lexer в качестве шаблонизатора, который может помочь кому-то начать. Дополнительные примеры лучше всего искать, изучая [[http://web.archive.org/web/20070814083008/http://cvs.sourceforge.net/viewcvs.py/simpletest/simpletest/test/parser_test.php?rev=1.46&view=auto|тестовые случаи парсера]].
  
 Если у меня есть такой шаблон; Если у меня есть такой шаблон;
Строка 24: Строка 25:
 </code> </code>
  
-где {$Greeting} и {$Closing} — ссылки на переменные шаблона, которые я хочу заменить некоторыми значениями, назначенными мной шаблонизатору, синтаксический анализатор, использующий лексический анализатор Simple Tests, может выглядеть так:+где ''{$Greeting}'' и ''{$Closing}'' — ссылки на переменные шаблона, которые я хочу заменить некоторыми значениями, назначенными мной шаблонизатору, синтаксический анализатор, использующий лексический анализатор Simple Tests, может выглядеть так:
  
 <code php> <code php>
Строка 126: Строка 127:
 Надеюсь, комментарии объяснят, что происходит. Надеюсь, комментарии объяснят, что происходит.
  
-Конечно, это очень нетребовательный язык, но, судя по опыту, Simple Tests Lexer может прекрасно масштабироваться до довольно сложного языка ( HTML , для которого Маркус его использует, не так уж и прост в анализе).+Конечно, это очень нетребовательный язык, но, судя по опыту, Simple Tests Lexer может прекрасно масштабироваться до довольно сложного языка ( HTML, для которого Маркус его использует, не так уж и прост в анализе).
  
-Примечание: это не для того, чтобы побудить вас писать еще больше шаблонизаторов! Более чем достаточно . Например, разбор CSS , Javascript, VBScript (подталкивание подталкивание) или SQL может быть стоящей миссией или для мини-языков, таких как язык выражений шаблонов WACT.+Примечание: это не для того, чтобы побудить вас писать еще больше шаблонизаторов! [[http://web.archive.org/web/20070814083008/http://www.sitepoint.com/forums/showthread.php?threadid=123769|Их более чем достаточно]]. Например, разбор CSS , Javascript, VBScript (подталкивание подталкивание) или SQL может быть стоящей миссией или для мини-языков, таких как язык выражений шаблонов WACT. 
 +=====Дополнения и Файлы===== 
 +[[http://web.archive.org/web/20070814083008/http://www.phppatterns.com/docs/develop/simple_test_lexer_notes|Ссылка на оригинальную статью]]
wiki/devel/parser/test/simple_test_lexer_notes.1737037104.txt.gz · Последнее изменение: vladpolskiy