[Versa] EBNF (start)
Michael Olson
Mike.Olson at fourthought.com
Thu Sep 15 10:19:51 MDT 2005
I haven't finished up all of the terminals yet, but do have the start
of all of the different expressions. Thought I would get it out for
early review.
I added some "symbols" because I think it will make parsing easier, but
let me know if you don't like something.
My intent is that "pattern" is a bit different then just the constants
that we have definied. I'd like to see some stuff in pattern like
*:foo
to match a foo in any namespace or
"foo"@*
to match a foo string in any language.
And I am working on resolving those now.
Mike
[1] versa-query ::= declaration-list? query
[2] declaration-list ::= declaration ';' declaration-list ?
[3] declaration ::= variable-declaration
| function-declaration
| prefix-declarion
| context-declaration
[4] variable-declaration ::= "@variable" qname '=' query
[5] function-declaration ::= "@function" qname '(' ( qname ( ',' qname
) * ) * ')' = query-expression
[6] prefix-declaration ::= "@prefix" prefix '=' uriref
[7] context-declaration ::= "@context" qname '=' query
[8] query ::= context-reference? query-expression
[9] context-reference ::= '{' qname '}'
[10] query-expression ::= '(' query-expression ')'
| query-expression slice_operator
| traversal
| filter
| function-call
[11] slice-operator ::= '[' (signed-number | (signed-number ':') | (':'
signed-number) | (signed-number ':' signed-number)
[12] traversal ::= forward-traversal | backward-traversal
[13] filter ::= forward-filter | backward-filter
[14] forward-traversal ::= (pattern-expression "-" pattern-expression
"->" filter-expression)
| ( '[' '-' pattern-expression "->"
filter-expression ']' )
[15] forward-filter ::= (pattern-expression "|-" pattern-expression
"->" filter-expression)
| ( '[' "|-" pattern-expression "->"
filter-expression ']' )
[16] backward-traversal ::= (filter-expression "<-" pattern-expression
"-" pattern-expression)
| ( '[' filter-expression "<-"
pattern-expression "-" ']' )
[17] backward-filter ::= (filter-expression "<-" pattern-expression
"-|" pattern-expression )
| ( '[' filter-expression "<-"
pattern-expression "-|" ']' )
[18] pattern-expression ::= pattern-expression slice-operator
| '(' pattern-expression ')'
| pattern
| variable-reference
| '{' query '}'
[20] filter-expression ::= '(' filter-expression ')'
| filter-expression slice-operator
| function-call
| anonymous-function-call
| pattern
| operator-expression
| variable-reference
[21] function_call ::= qname '(' ( argument-expression ( ','
argument-expression ) * ) ? ')'
[23] argument-expression ::= argument-expression slice-operator
| '(' argument-expression ')'
| filter
| traverse
| pattern
| function-call
| anonymous-function-call
| variable-reference
[24] operator-expression ::= operator-expression? operator
filter-expression
[25] pattern ::= node-pattern | literal-pattern | particle
------------------------------------------------------------------------
-----------------
Mike Olson Principal
Consultant
mike.olson at fourthought.com +1 720 253 4662
Fourthought, Inc.
http://Fourthought.com
PO Box 270590, http://4Suite.org
Louisville, CO 80027-5009, USA
XML strategy, XML tools, knowledge management
More information about the Versa
mailing list