The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Релиз php-parser 0.5, парсера кода PHP

08.06.2018 13:13

Подготовлен новый выпуск php-parser, библиотеки для синтаксического разбора исходного кода на языке PHP в абстрактное синтаксическое дерево. Полностью поддерживается синтаксис PHP 5 и PHP 7, включая разбор пространств имён и возможность обработки PHP-файлов с некорректным синтаксисом. Проект может использоваться для создания статических анализаторов, утилит рефакторинга и сбора метрик. Код проекта написан на языке Go c использованием библиотек goyacc и golex, и распространяется под лиценизей MIT.

  1. Главная ссылка к новости (https://github.com/z7zmey/php-...)
Автор новости: Vadym Slizov
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/48739-php
Ключевые слова: php, parser
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (25) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 17:58, 08/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Парсер пхп на go? Надо было на js делать для полноты картины
     
     
  • 2.7, Аноним (-), 18:57, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Тогда уж на пхп
     
     
  • 3.11, Аноним (-), 19:28, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    парсер на PHP уже написан и встроен в PHP
    http://php.net/manual/ru/function.token-get-all.php
     
  • 3.24, Шерстяной (?), 21:51, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https://github.com/nikic/PHP-Parser

    не благодарите

     
     
  • 4.27, Григорий Федорович Конин (?), 23:54, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    для чего вам хватит? Оно же ни в неймспейсы, ни даже в классы не умеет.
     
  • 2.25, trdm (ok), 22:13, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    а мне и на сях хватит:
    https://github.com/universal-ctags/ctags/blob/master/parsers/php.c
     

  • 1.2, Аноним (-), 18:04, 08/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    А чем оно лучше nikic/PHP-Parser. Парсера php на php от одного из ключевых разработчиков самого php?
     
  • 1.3, Vadym Slizov (?), 18:11, 08/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это полный аналог nikic/PHP-Parser только на Go. Ну и еще он немного быстре, по моим замерам приблизительно в 5 раз.
     
  • 1.4, Аноним (-), 18:14, 08/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    personal home parser
     
  • 1.6, Аноним (-), 18:39, 08/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > возможность обработки PHP-файлов с некорректным синтаксисом.

    Приличный парсер при обнаружении некорректного синтаксиса должен ругнуться и вылететь. Но не в случае с PHP.

     
     
  • 2.8, Аноним (-), 19:06, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    для PHP парсер с такой логикой пишется в три строчки...
     
  • 2.9, Аноним (-), 19:07, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Ты не прав, для реадкторов/IDE для любого ЯП это краегоульная фича
     
     
  • 3.12, Аноним (-), 19:47, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    собрался выполнять код при помощи подсвечивалки синтаксиса?
     
     
  • 4.14, Vadym Slizov (?), 20:09, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > собрался выполнять код при помощи подсвечивалки синтаксиса?

    Вы очевидно не поняли назначение данной библиотеки. Она не нацелена на исполнение кода. Основное назначение - перевод текстового представления исходников в пригодный для машинной обработки AST. Это как раз нужно для создания IDE, статических анализаторов, утилит автоматизированого рефакторинга либо для сбора метрик.

     
     
  • 5.15, Аноним (-), 20:20, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    приведи мне IDE, написанную на шаблонизаторе "персонал хоум пейджь"
     
     
  • 6.16, KonstantinB (ok), 20:29, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ты не понял нифига.

    Не IDE на PHP, а IDE для PHP.

    Вот запускаешь тот же PHPStorm, пишешь невалидный PHP-код, он красненьким подсвечивается. Понятно теперь?

     
     
  • 7.20, Аноним (-), 20:48, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    а, все, теперь понял. Звиняйте, пацаны. Я опорочил имя Аноним
     
  • 6.21, Vadym Slizov (?), 20:51, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > приведи мне IDE, написанную на шаблонизаторе "персонал хоум пейджь"

    https://github.com/felixfbecker/php-language-server реализует функции IDE для VSCode. А под капотом использует https://github.com/microsoft/tolerant-php-parser который, между прочим, тоже написан на PHP.

     

  • 1.10, Аноним (-), 19:23, 08/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а как насчет конвертации полученого AST в go исходники?
     
     
  • 2.13, Vadym Slizov (?), 19:56, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > а как насчет конвертации полученого AST в go исходники?

    В стандартной библиотеки Go присутствует пакет AST и его можно использовать для генерации Go исходников. Самое сложное это сконвертировать абстрактное дерево PHP в абстрактное дерево Go.
    Cтруктура этих языков очень разная, и я склонен верить что это практически нереализуемая задача.

     
     
  • 3.26, Аноним (-), 23:47, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Почему не реализуемая. Практическую ценность будет иметь продукт, который 90% кода переведет (вполне реально), а 10% снабдит каментом "не шмагла" и оставит как есть. Экономия времени все равно будет нехилая.
     
  • 2.17, KonstantinB (ok), 20:30, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > а как насчет конвертации полученого AST в go исходники?

    Это невозможно. Даже если выбросить eval() и подобное, что делать с нестрогой динамической типизацией?

     
     
  • 3.19, Аноним (-), 20:45, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Субсет. У FB было параллельно с LLVM, не помню, как называлось.
     
     
  • 4.22, KonstantinB (ok), 21:21, 08/06/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У FB субсет был недолго, из него получился свой язык Hack, который, хоть и похож на PHP, но совсем не PHP.

    Для проекта, который на субсете пишется по определенным правилам, это, конечно, возможно. Но смысла в этом не наблюдаю: существующий сколь-либо крупный проект на сабсет вменяемыми усилиями не переделать. А если писать новый проект - если нужна нормальная типизация и компиляция в нативный код, зачем его вообще писать на PHP, тем более, что ни один фреймворк под такие требования не подойдет?

     
     
  • 5.28, Аноним (-), 03:22, 09/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А на чем тогда писать?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру