Парсинг выражений xpath
Я хочу разобрать выражения XPath Я ищу реализацию лексера / парсера в C++ или Python
Вот вся информация о парсерах XPath, которые мне удалось собрать:
- ANTLR грамматика для XPath 1 и 2 (из Parse XPath Expressions)
- парсер и лексер Python из PDIS
- несколько реализаций Python из " Навстречу стандартному генератору парсера"
Кто-нибудь знает другие реализации? в С ++?
PS: я не хочу оценивать выражения XPath, но ставить их на токены
3 ответа
На основании комментария ОП,
Я работаю над переписыванием и эквивалентностью запросов XPath
ему нужен синтаксический анализатор, который строит абстрактные синтаксические деревья и способы их анализа и преобразования. Анализаторы и "переписывание" могут быть затем выполнены процедурно путем ходьбы / изменения AST; это традиционный способ сделать это.
Но похоже, что в центре внимания должны быть цели ОП. Для этого ему нужен анализ и переписывание. Но это не должно быть полностью сделано традиционным, процедурным способом. Скорее, было бы неплохо, если бы анализ / переписывание можно было выполнить напрямую с использованием нотации XPath.
Я предлагаю ему взглянуть на наш DMS Software Reengineering Toolkit, который анализирует, создает AST, но, в частности, позволяет "переписывать" AST с использованием поверхностного синтаксиса. Тогда XPath "переписывает" может быть написано непосредственно как эквивалент по выражениям XPath. Мотивирующий пример того, как это работает, можно рассматривать как переписывание уравнений алгебры с использованием DMS. Из этого примера должно быть очевидно, что грамматика для XPath легко определяется.
У Xerces есть ответвление, xalan-c, для этого: