Есть ли способ проверить XQuery с помощью регулярного выражения? - PullRequest
0 голосов
/ 30 декабря 2011

Есть ли способ проверить XQuery с помощью регулярного выражения?

Я хочу использовать это в моей целевой программе c.

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

Грамматика XQuery была отмечена в E-BNF. BNF - это обозначение для контекстно-свободных грамматик, которые менее ограничены, чем обычные грамматики (которые, например, описываются регулярными выражениями). Как правило, в иерархии Хомского .

невозможно преобразовать грамматику в языки lower

Множество теоретических компьютерных наук, и никто не говорит нам наверняка, что рабочая группа XQuery не просто использовала BNF для удобства и могла бы использовать REGEX для описания грамматики.

Но давайте иметь другую точку зрения. XQuery позволяет загружать произвольный код из других модулей. Если реализация позволяет это, разрешены даже ресурсы HTTP, например. import module namespace functx = "http://www.functx.com" at "http://www.xqueryfunctions.com/xq/functx-1.0-nodoc-2007-01.xq"; (не делайте этого в вашем приложении, зеркально отразите библиотеку functx - загрузка с веб-страницы будет намного медленнее, и ребята из functx вам не понравятся). Поэтому вам нужно проанализировать (хотя бы некоторые части) вашего XQuery, чтобы даже получить весь код.


Выберите реализацию XQuery и используйте ее. Есть лотов вокруг , Apple даже включает один в NSXML .

0 голосов
/ 30 декабря 2011

Нет, язык без контекста, который не является обычным языком, не может быть распознан с помощью регулярного выражения.

В частности, для синтаксического анализа языку CF требуется неограниченная структура памяти (например, стек), что не имеет место при обычном распознавании языка, когда требуется только фиксированный объем памяти (для конечного автомата) .

XQuery на самом деле является языком с довольно сложной грамматикой. Он содержит целый язык XPath 2.0 в качестве подмножества. В прошлом я производил парсер для XPath 2.0 и знаю его грамматику. В нем около 210 правил. Само по себе это говорит о сложности XPath 2.0, а XPath 2.0 является лишь подмножеством XQuery.

...