summaryrefslogtreecommitdiff
path: root/tests/lexers/xquery/example.txt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lexers/xquery/example.txt')
-rw-r--r--tests/lexers/xquery/example.txt850
1 files changed, 850 insertions, 0 deletions
diff --git a/tests/lexers/xquery/example.txt b/tests/lexers/xquery/example.txt
new file mode 100644
index 00000000..01593911
--- /dev/null
+++ b/tests/lexers/xquery/example.txt
@@ -0,0 +1,850 @@
+---input---
+xquery version "3.0";
+
+declare function local:add-log-message($message as xs:string) as empty-sequence()?
+{
+ let $logfile-collection := "/db/apps/exist101/log"
+ let $logfile-name := "exist101-log.xml"
+ let $logfile-full := concat($logfile-collection, '/', $logfile-name)
+ let $logfile-created :=
+ if(doc-available($logfile-full))then
+ $logfile-full
+ else
+ xmldb:store($logfile-collection, $logfile-name, <eXist101-Log/>)
+ return
+ update insert
+ <LogEntry timestamp="{current-dateTime()}">{$message}</LogEntry>
+ into doc($logfile-full)/*
+};
+
+declare function local:insert-attributes() {
+ let $elm as element() := doc('/db/Path/To/Some/Document.xml')/*
+ return (
+ update insert <NEW/> into $elm,
+ update insert attribute x { 'y' } into $elm/*[last()],
+ update insert attribute a { 'b' } into $elm/*[last()]
+ )
+};
+
+declare function local:insert-elem() {
+ let $elm as element() := doc('/db/Path/To/Some/Document.xml')/*
+ return
+ update insert <NEW x="y" a="b"/> into $elm
+};
+
+declare function local:insert-elem2() {
+ let $elm as element() := doc('/db/Path/To/Some/Document.xml')/*
+ let $new-element as element() := <NEW x="y" a="b"/>
+ return
+ update insert $new-element into $elm
+};
+
+declare function local:insert-single() {
+ update insert <LogEntry>Something happened...</LogEntry> into doc('/db/logs/mainlog.xml')/*
+};
+
+
+declare function local:trim-insert() {
+ let $document := doc('/db/logs/mainlog.xml')
+ let $newentry := <LogEntry>Something happened...</LogEntry>
+ return
+ update delete $document/*/LogEntry[position() ge 10],
+ if(exists($document/*/LogEntry[1]))then
+ update insert $newentry preceding $document/*/LogEntry[1]
+ else
+ update insert $newentry into $document/*
+};
+
+
+declare function local:attempt-document-node-insert() {
+
+ (: This is invalid: :)
+ let $document as document-node() := <Root><a/></Root>
+ return
+ update insert <b/> into $document/*
+};
+
+declare function local:attempt-attr-update-with-node() {
+ update replace doc('/db/test/test.xml')/*/@name with
+ <a>aaa<b>bbb</b></a>
+};
+
+
+(# exist:batch-transaction #) {
+ update delete $document/*/LogEntry[position() ge 10],
+ update insert $newentry preceding $document/*/LogEntry[1]
+}
+
+---tokens---
+'xquery' Keyword.Pseudo
+' ' Text
+'version' Keyword.Pseudo
+' ' Text
+'"3.0"' Literal.String.Double
+';' Punctuation
+'\n\n' Text
+
+'declare' Keyword.Declaration
+' ' Text
+'function' Keyword.Declaration
+' ' Text
+'local:add-log-message' Name.Function
+'(' Punctuation
+'$' Name.Variable
+'message' Name
+' ' Text
+'as' Keyword
+' ' Text
+'xs:string' Keyword.Type
+')' Punctuation
+' ' Text
+'as' Keyword
+' ' Text
+'empty-sequence' Name.Tag
+'' Text
+'(' Punctuation
+')' Punctuation
+'?' Punctuation
+'\n' Text
+
+'{' Punctuation
+'\n\t' Text
+'let' Keyword
+' ' Text
+'$' Name.Variable
+'logfile-collection' Name
+' ' Text
+':=' Operator
+' ' Text
+'"/db/apps/exist101/log"' Literal.String.Double
+'\n\t' Text
+'let' Keyword
+' ' Text
+'$' Name.Variable
+'logfile-name' Name
+' ' Text
+':=' Operator
+' ' Text
+'"exist101-log.xml"' Literal.String.Double
+'\n\t' Text
+'let' Keyword
+' ' Text
+'$' Name.Variable
+'logfile-full' Name
+' ' Text
+':=' Operator
+' ' Text
+'concat' Name.Function
+'(' Punctuation
+'$' Name.Variable
+'logfile-collection' Name
+',' Punctuation
+' ' Text
+"'/'" Literal.String.Single
+',' Punctuation
+' ' Text
+'$' Name.Variable
+'logfile-name' Name
+')' Punctuation
+'\n\t' Text
+'let' Keyword
+' ' Text
+'$' Name.Variable
+'logfile-created' Name
+' ' Text
+':=' Operator
+'\n\t' Text
+'if' Keyword
+'(' Punctuation
+'doc-available' Name.Function
+'(' Punctuation
+'$' Name.Variable
+'logfile-full' Name
+')' Punctuation
+')' Punctuation
+'then' Keyword
+'\n\t\t' Text
+'$' Name.Variable
+'logfile-full' Name
+'\n\t' Text
+'else' Keyword
+'\n\t\t' Text
+'xmldb:store' Name.Function
+'(' Punctuation
+'$' Name.Variable
+'logfile-collection' Name
+',' Punctuation
+' ' Text
+'$' Name.Variable
+'logfile-name' Name
+',' Punctuation
+' ' Text
+'<' Name.Tag
+'eXist101-Log' Name.Tag
+'/>' Name.Tag
+')' Punctuation
+'\n\t' Text
+'return' Keyword
+'\n\t\t' Text
+'update' Keyword
+' ' Text
+'insert' Keyword
+'\n\t\t\t' Text
+'<' Name.Tag
+'LogEntry' Name.Tag
+' ' Text
+'timestamp' Name.Tag
+'=' Operator
+'"' Punctuation
+'{' Punctuation
+'current-dateTime' Name.Function
+'(' Punctuation
+')' Punctuation
+'}' Punctuation
+'"' Punctuation
+'>' Name.Tag
+'{' Punctuation
+'$' Name.Variable
+'message' Name
+'}' Punctuation
+'</' Name.Tag
+'LogEntry' Name.Tag
+'>' Name.Tag
+'\n\t\t' Text
+'into' Keyword
+' ' Text
+'doc' Name.Function
+'(' Punctuation
+'$' Name.Variable
+'logfile-full' Name
+')' Punctuation
+'/' Punctuation
+'*' Name.Tag
+'\n' Text
+
+'}' Punctuation
+';' Punctuation
+'\n\n' Text
+
+'declare' Keyword.Declaration
+' ' Text
+'function' Keyword.Declaration
+' ' Text
+'local:insert-attributes' Name.Function
+'(' Punctuation
+')' Punctuation
+' ' Text
+'{' Punctuation
+'\n\t' Text
+'let' Keyword
+' ' Text
+'$' Name.Variable
+'elm' Name
+' ' Text
+'as' Keyword
+' ' Text
+'element' Name.Tag
+'' Text
+'(' Punctuation
+')' Punctuation
+' ' Text
+':=' Operator
+' ' Text
+'doc' Name.Function
+'(' Punctuation
+"'/db/Path/To/Some/Document.xml'" Literal.String.Single
+')' Punctuation
+'/' Punctuation
+'*' Name.Tag
+'\n\t' Text
+'return' Keyword
+' ' Text
+'(' Punctuation
+'\n\t\t' Text
+'update' Keyword
+' ' Text
+'insert' Keyword
+' ' Text
+'<' Name.Tag
+'NEW' Name.Tag
+'/>' Name.Tag
+' ' Text
+'into' Keyword
+' ' Text
+'$' Name.Variable
+'elm' Name
+',' Punctuation
+'\n\t\t' Text
+'update' Keyword
+' ' Text
+'insert' Keyword
+' ' Text
+'attribute' Keyword
+' ' Text
+'x' Name.Variable
+' ' Text
+'{' Punctuation
+' ' Text
+"'y'" Literal.String.Single
+' ' Text
+'}' Punctuation
+' ' Text
+'into' Keyword
+' ' Text
+'$' Name.Variable
+'elm' Name
+'/' Punctuation
+'*' Name.Tag
+'[' Punctuation
+'last' Name.Function
+'(' Punctuation
+')' Punctuation
+']' Punctuation
+',' Punctuation
+'\n\t\t' Text
+'update' Keyword
+' ' Text
+'insert' Keyword
+' ' Text
+'attribute' Keyword
+' ' Text
+'a' Name.Variable
+' ' Text
+'{' Punctuation
+' ' Text
+"'b'" Literal.String.Single
+' ' Text
+'}' Punctuation
+' ' Text
+'into' Keyword
+' ' Text
+'$' Name.Variable
+'elm' Name
+'/' Punctuation
+'*' Name.Tag
+'[' Punctuation
+'last' Name.Function
+'(' Punctuation
+')' Punctuation
+']' Punctuation
+'\n\t' Text
+')' Punctuation
+'\n' Text
+
+'}' Punctuation
+';' Punctuation
+'\n\n' Text
+
+'declare' Keyword.Declaration
+' ' Text
+'function' Keyword.Declaration
+' ' Text
+'local:insert-elem' Name.Function
+'(' Punctuation
+')' Punctuation
+' ' Text
+'{' Punctuation
+'\n\t' Text
+'let' Keyword
+' ' Text
+'$' Name.Variable
+'elm' Name
+' ' Text
+'as' Keyword
+' ' Text
+'element' Name.Tag
+'' Text
+'(' Punctuation
+')' Punctuation
+' ' Text
+':=' Operator
+' ' Text
+'doc' Name.Function
+'(' Punctuation
+"'/db/Path/To/Some/Document.xml'" Literal.String.Single
+')' Punctuation
+'/' Punctuation
+'*' Name.Tag
+'\n\t' Text
+'return' Keyword
+'\n\t\t' Text
+'update' Keyword
+' ' Text
+'insert' Keyword
+' ' Text
+'<' Name.Tag
+'NEW' Name.Tag
+' ' Text
+'x' Name.Tag
+'=' Operator
+'"' Punctuation
+'y' Name.Attribute
+'"' Punctuation
+' ' Text
+'a' Name.Tag
+'=' Operator
+'"' Punctuation
+'b' Name.Attribute
+'"' Punctuation
+'/>' Name.Tag
+' ' Text
+'into' Keyword
+' ' Text
+'$' Name.Variable
+'elm' Name
+'\n' Text
+
+'}' Punctuation
+';' Punctuation
+'\n\n' Text
+
+'declare' Keyword.Declaration
+' ' Text
+'function' Keyword.Declaration
+' ' Text
+'local:insert-elem2' Name.Function
+'(' Punctuation
+')' Punctuation
+' ' Text
+'{' Punctuation
+'\n\t' Text
+'let' Keyword
+' ' Text
+'$' Name.Variable
+'elm' Name
+' ' Text
+'as' Keyword
+' ' Text
+'element' Name.Tag
+'' Text
+'(' Punctuation
+')' Punctuation
+' ' Text
+':=' Operator
+' ' Text
+'doc' Name.Function
+'(' Punctuation
+"'/db/Path/To/Some/Document.xml'" Literal.String.Single
+')' Punctuation
+'/' Punctuation
+'*' Name.Tag
+'\n\t' Text
+'let' Keyword
+' ' Text
+'$' Name.Variable
+'new-element' Name
+' ' Text
+'as' Keyword
+' ' Text
+'element' Name.Tag
+'' Text
+'(' Punctuation
+')' Punctuation
+' ' Text
+':=' Operator
+' ' Text
+'<' Name.Tag
+'NEW' Name.Tag
+' ' Text
+'x' Name.Tag
+'=' Operator
+'"' Punctuation
+'y' Name.Attribute
+'"' Punctuation
+' ' Text
+'a' Name.Tag
+'=' Operator
+'"' Punctuation
+'b' Name.Attribute
+'"' Punctuation
+'/>' Name.Tag
+'\n\t' Text
+'return' Keyword
+'\n\t\t' Text
+'update' Keyword
+' ' Text
+'insert' Keyword
+' ' Text
+'$' Name.Variable
+'new-element' Name
+' ' Text
+'into' Keyword
+' ' Text
+'$' Name.Variable
+'elm' Name
+'\t\n' Text
+
+'}' Punctuation
+';' Punctuation
+'\n\n' Text
+
+'declare' Keyword.Declaration
+' ' Text
+'function' Keyword.Declaration
+' ' Text
+'local:insert-single' Name.Function
+'(' Punctuation
+')' Punctuation
+' ' Text
+'{' Punctuation
+'\n\t' Text
+'update' Keyword
+' ' Text
+'insert' Keyword
+' ' Text
+'<' Name.Tag
+'LogEntry' Name.Tag
+'>' Name.Tag
+'S' Literal
+'o' Literal
+'m' Literal
+'e' Literal
+'t' Literal
+'h' Literal
+'i' Literal
+'n' Literal
+'g' Literal
+' ' Literal
+'h' Literal
+'a' Literal
+'p' Literal
+'p' Literal
+'e' Literal
+'n' Literal
+'e' Literal
+'d' Literal
+'.' Literal
+'.' Literal
+'.' Literal
+'</' Name.Tag
+'LogEntry' Name.Tag
+'>' Name.Tag
+' ' Text
+'into' Keyword
+' ' Text
+'doc' Name.Function
+'(' Punctuation
+"'/db/logs/mainlog.xml'" Literal.String.Single
+')' Punctuation
+'/' Punctuation
+'*' Name.Tag
+'\n' Text
+
+'}' Punctuation
+';' Punctuation
+'\n\n\n' Text
+
+'declare' Keyword.Declaration
+' ' Text
+'function' Keyword.Declaration
+' ' Text
+'local:trim-insert' Name.Function
+'(' Punctuation
+')' Punctuation
+' ' Text
+'{' Punctuation
+'\n\t' Text
+'let' Keyword
+' ' Text
+'$' Name.Variable
+'document' Name
+' ' Text
+':=' Operator
+' ' Text
+'doc' Name.Function
+'(' Punctuation
+"'/db/logs/mainlog.xml'" Literal.String.Single
+')' Punctuation
+'\n\t' Text
+'let' Keyword
+' ' Text
+'$' Name.Variable
+'newentry' Name
+' ' Text
+':=' Operator
+' ' Text
+'<' Name.Tag
+'LogEntry' Name.Tag
+'>' Name.Tag
+'S' Literal
+'o' Literal
+'m' Literal
+'e' Literal
+'t' Literal
+'h' Literal
+'i' Literal
+'n' Literal
+'g' Literal
+' ' Literal
+'h' Literal
+'a' Literal
+'p' Literal
+'p' Literal
+'e' Literal
+'n' Literal
+'e' Literal
+'d' Literal
+'.' Literal
+'.' Literal
+'.' Literal
+'</' Name.Tag
+'LogEntry' Name.Tag
+'>' Name.Tag
+'\n\t' Text
+'return' Keyword
+'\n\t\t' Text
+'update' Keyword
+' ' Text
+'delete' Keyword
+' ' Text
+'$' Name.Variable
+'document' Name
+'/' Punctuation
+'*' Name.Tag
+'/' Punctuation
+'LogEntry' Name.Tag
+'[' Punctuation
+'position' Name.Function
+'(' Punctuation
+')' Punctuation
+' ' Text
+'ge' Operator.Word
+' ' Text
+'10' Literal.Number.Integer
+']' Punctuation
+',' Punctuation
+'\n\t\t' Text
+'if' Keyword
+'(' Punctuation
+'exists' Name.Function
+'(' Punctuation
+'$' Name.Variable
+'document' Name
+'/' Punctuation
+'*' Name.Tag
+'/' Punctuation
+'LogEntry' Name.Tag
+'[' Punctuation
+'1' Literal.Number.Integer
+']' Punctuation
+')' Punctuation
+')' Punctuation
+'then' Keyword
+'\n\t\t\t' Text
+'update' Keyword
+' ' Text
+'insert' Keyword
+' ' Text
+'$' Name.Variable
+'newentry' Name
+' ' Text
+'preceding' Keyword
+' ' Text
+'$' Name.Variable
+'document' Name
+'/' Punctuation
+'*' Name.Tag
+'/' Punctuation
+'LogEntry' Name.Tag
+'[' Punctuation
+'1' Literal.Number.Integer
+']' Punctuation
+'\n\t\t' Text
+'else' Keyword
+'\n\t\t\t' Text
+'update' Keyword
+' ' Text
+'insert' Keyword
+' ' Text
+'$' Name.Variable
+'newentry' Name
+' ' Text
+'into' Keyword
+' ' Text
+'$' Name.Variable
+'document' Name
+'/' Punctuation
+'*' Name.Tag
+'\n' Text
+
+'}' Punctuation
+';' Punctuation
+'\n\n\n' Text
+
+'declare' Keyword.Declaration
+' ' Text
+'function' Keyword.Declaration
+' ' Text
+'local:attempt-document-node-insert' Name.Function
+'(' Punctuation
+')' Punctuation
+' ' Text
+'{' Punctuation
+'\n\t\n\t' Text
+'(:' Comment
+' ' Comment
+'T' Comment
+'h' Comment
+'i' Comment
+'s' Comment
+' ' Comment
+'i' Comment
+'s' Comment
+' ' Comment
+'i' Comment
+'n' Comment
+'v' Comment
+'a' Comment
+'l' Comment
+'i' Comment
+'d' Comment
+':' Comment
+' ' Comment
+':)' Comment
+'\n\t' Text
+'let' Keyword
+' ' Text
+'$' Name.Variable
+'document' Name
+' ' Text
+'as' Keyword
+' ' Text
+'document-node' Name.Tag
+'' Text
+'(' Punctuation
+')' Punctuation
+' ' Text
+':=' Operator
+' ' Text
+'<' Name.Tag
+'Root' Name.Tag
+'>' Name.Tag
+'<' Name.Tag
+'a' Name.Tag
+'/>' Name.Tag
+'</' Name.Tag
+'Root' Name.Tag
+'>' Name.Tag
+'\n\t' Text
+'return' Keyword
+'\n\t\t' Text
+'update' Keyword
+' ' Text
+'insert' Keyword
+' ' Text
+'<' Name.Tag
+'b' Name.Tag
+'/>' Name.Tag
+' ' Text
+'into' Keyword
+' ' Text
+'$' Name.Variable
+'document' Name
+'/' Punctuation
+'*' Name.Tag
+'\n' Text
+
+'}' Punctuation
+';' Punctuation
+'\n\n' Text
+
+'declare' Keyword.Declaration
+' ' Text
+'function' Keyword.Declaration
+' ' Text
+'local:attempt-attr-update-with-node' Name.Function
+'(' Punctuation
+')' Punctuation
+' ' Text
+'{' Punctuation
+'\n\t' Text
+'update' Keyword
+' ' Text
+'replace' Keyword
+' ' Text
+'doc' Name.Function
+'(' Punctuation
+"'/db/test/test.xml'" Literal.String.Single
+')' Punctuation
+'/' Punctuation
+'*' Name.Tag
+'/' Punctuation
+'@name' Name.Attribute
+' ' Text
+'with' Keyword
+'\n\t\t' Text
+'<' Name.Tag
+'a' Name.Tag
+'>' Name.Tag
+'a' Literal
+'a' Literal
+'a' Literal
+'<' Name.Tag
+'b' Name.Tag
+'>' Name.Tag
+'b' Literal
+'b' Literal
+'b' Literal
+'</' Name.Tag
+'b' Name.Tag
+'>' Name.Tag
+'</' Name.Tag
+'a' Name.Tag
+'>' Name.Tag
+'\n' Text
+
+'}' Punctuation
+';' Punctuation
+'\n\n\n' Text
+
+'(#' Punctuation
+' ' Text
+'exist:batch-transaction' Name.Variable
+' ' Literal
+'#)' Punctuation
+' ' Text
+'{' Punctuation
+'\n\t' Text
+'update' Keyword
+' ' Text
+'delete' Keyword
+' ' Text
+'$' Name.Variable
+'document' Name
+'/' Punctuation
+'*' Name.Tag
+'/' Punctuation
+'LogEntry' Name.Tag
+'[' Punctuation
+'position' Name.Function
+'(' Punctuation
+')' Punctuation
+' ' Text
+'ge' Operator.Word
+' ' Text
+'10' Literal.Number.Integer
+']' Punctuation
+',' Punctuation
+'\n\t' Text
+'update' Keyword
+' ' Text
+'insert' Keyword
+' ' Text
+'$' Name.Variable
+'newentry' Name
+' ' Text
+'preceding' Keyword
+' ' Text
+'$' Name.Variable
+'document' Name
+'/' Punctuation
+'*' Name.Tag
+'/' Punctuation
+'LogEntry' Name.Tag
+'[' Punctuation
+'1' Literal.Number.Integer
+']' Punctuation
+'\n' Text
+
+'}' Punctuation
+'\n' Text