Created
February 21, 2012 23:38
-
-
Save apb2006/1879855 to your computer and use it in GitHub Desktop.
anotations from Xquery
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import module namespace p="apb.parser-basex"; | |
| let $xq:=' | |
| declare | |
| %rest:path("/stock/widget/{$id}") | |
| function local:widget($id as xs:int) { | |
| (: get the widget :) | |
| fn:collection("/db/widgets")/widget[@id eq $id] | |
| }; | |
| 2+3 | |
| ' | |
| return p:parse-XQuery($xq)//AnnotatedDecl | |
| <AnnotatedDecl> | |
| <TOKEN>declare</TOKEN> | |
| <Annotation> | |
| <TOKEN>%</TOKEN> | |
| <EQName> | |
| <FunctionName> | |
| <EQName>rest:path</EQName> | |
| </FunctionName> | |
| </EQName> | |
| <TOKEN>(</TOKEN> | |
| <Literal> | |
| <StringLiteral>"/stock/widget/{$id}"</StringLiteral> | |
| </Literal> | |
| <TOKEN>)</TOKEN> | |
| </Annotation> | |
| <FunctionDecl> | |
| <TOKEN>function</TOKEN> | |
| <EQName> | |
| <FunctionName> <EQName>local:widget</EQName> | |
| </FunctionName> | |
| </EQName> | |
| <TOKEN>(</TOKEN> | |
| <ParamList> | |
| <Param> | |
| <TOKEN>$</TOKEN> | |
| <EQName> | |
| <FunctionName> | |
| <EQName>id</EQName> | |
| </FunctionName> | |
| </EQName> | |
| <TypeDeclaration> <TOKEN>as</TOKEN> | |
| <SequenceType> | |
| <ItemType> | |
| <AtomicOrUnionType> | |
| <EQName> | |
| <FunctionName> <EQName>xs:int</EQName> | |
| </FunctionName> | |
| </EQName> | |
| </AtomicOrUnionType> | |
| </ItemType> | |
| </SequenceType> | |
| </TypeDeclaration> | |
| </Param> | |
| </ParamList> | |
| <TOKEN>)</TOKEN> | |
| <FunctionBody> | |
| <EnclosedExpr> <TOKEN>{</TOKEN> | |
| <Expr> | |
| <ExprSingle> | |
| <OrExpr> | |
| <AndExpr> | |
| <ComparisonExpr> | |
| <FTContainsExpr> | |
| <RangeExpr> | |
| <AdditiveExpr> | |
| <MultiplicativeExpr> | |
| <UnionExpr> | |
| <IntersectExceptExpr> | |
| <InstanceofExpr> | |
| <TreatExpr> | |
| <CastableExpr> | |
| <CastExpr> | |
| <UnaryExpr> | |
| <ValueExpr> | |
| <PathExpr> | |
| <RelativePathExpr> | |
| <StepExpr> | |
| <PostfixExpr> | |
| <PrimaryExpr> | |
| <FunctionCall> | |
| <FunctionName> | |
| (: get the widget :) | |
| <EQName>fn:collection</EQName> | |
| </FunctionName> | |
| <ArgumentList> | |
| <TOKEN>(</TOKEN> | |
| <Argument> | |
| <ExprSingle> | |
| <OrExpr> | |
| <AndExpr> | |
| <ComparisonExpr> | |
| <FTContainsExpr> | |
| <RangeExpr> | |
| <AdditiveExpr> | |
| <MultiplicativeExpr> | |
| <UnionExpr> | |
| <IntersectExceptExpr> | |
| <InstanceofExpr> | |
| <TreatExpr> | |
| <CastableExpr> | |
| <CastExpr> | |
| <UnaryExpr> | |
| <ValueExpr> | |
| <PathExpr> | |
| <RelativePathExpr> | |
| <StepExpr> | |
| <PostfixExpr> | |
| <PrimaryExpr> | |
| <Literal> | |
| <StringLiteral>"/db/widgets"</StringLiteral> | |
| </Literal> | |
| </PrimaryExpr> | |
| </PostfixExpr> | |
| </StepExpr> | |
| </RelativePathExpr> | |
| </PathExpr> | |
| </ValueExpr> | |
| </UnaryExpr> | |
| </CastExpr> | |
| </CastableExpr> | |
| </TreatExpr> | |
| </InstanceofExpr> | |
| </IntersectExceptExpr> | |
| </UnionExpr> | |
| </MultiplicativeExpr> | |
| </AdditiveExpr> | |
| </RangeExpr> | |
| </FTContainsExpr> | |
| </ComparisonExpr> | |
| </AndExpr> | |
| </OrExpr> | |
| </ExprSingle> | |
| </Argument> | |
| <TOKEN>)</TOKEN> | |
| </ArgumentList> | |
| </FunctionCall> | |
| </PrimaryExpr> | |
| </PostfixExpr> | |
| </StepExpr> | |
| <TOKEN>/</TOKEN> | |
| <StepExpr> | |
| <AxisStep> | |
| <ForwardStep> | |
| <AbbrevForwardStep> | |
| <NodeTest> | |
| <NameTest> | |
| <EQName> | |
| <FunctionName> | |
| <EQName>widget</EQName> | |
| </FunctionName> | |
| </EQName> | |
| </NameTest> | |
| </NodeTest> | |
| </AbbrevForwardStep> | |
| </ForwardStep> | |
| <PredicateList> | |
| <Predicate> | |
| <TOKEN>[</TOKEN> | |
| <Expr> | |
| <ExprSingle> | |
| <OrExpr> | |
| <AndExpr> | |
| <ComparisonExpr> | |
| <FTContainsExpr> | |
| <RangeExpr> | |
| <AdditiveExpr> | |
| <MultiplicativeExpr> | |
| <UnionExpr> | |
| <IntersectExceptExpr> | |
| <InstanceofExpr> | |
| <TreatExpr> | |
| <CastableExpr> | |
| <CastExpr> | |
| <UnaryExpr> | |
| <ValueExpr> | |
| <PathExpr> | |
| <RelativePathExpr> | |
| <StepExpr> | |
| <AxisStep> | |
| <ForwardStep> | |
| <AbbrevForwardStep> | |
| <TOKEN>@</TOKEN> | |
| <NodeTest> | |
| <NameTest> | |
| <EQName> | |
| <FunctionName> | |
| <EQName>id</EQName> | |
| </FunctionName> | |
| </EQName> | |
| </NameTest> | |
| </NodeTest> | |
| </AbbrevForwardStep> | |
| </ForwardStep> | |
| <PredicateList/> | |
| </AxisStep> | |
| </StepExpr> | |
| </RelativePathExpr> | |
| </PathExpr> | |
| </ValueExpr> | |
| </UnaryExpr> | |
| </CastExpr> | |
| </CastableExpr> | |
| </TreatExpr> | |
| </InstanceofExpr> | |
| </IntersectExceptExpr> | |
| </UnionExpr> | |
| </MultiplicativeExpr> | |
| </AdditiveExpr> | |
| </RangeExpr> | |
| </FTContainsExpr> | |
| <ValueComp> <TOKEN>eq</TOKEN> | |
| </ValueComp> | |
| <FTContainsExpr> | |
| <RangeExpr> | |
| <AdditiveExpr> | |
| <MultiplicativeExpr> | |
| <UnionExpr> | |
| <IntersectExceptExpr> | |
| <InstanceofExpr> | |
| <TreatExpr> | |
| <CastableExpr> | |
| <CastExpr> | |
| <UnaryExpr> | |
| <ValueExpr> | |
| <PathExpr> | |
| <RelativePathExpr> | |
| <StepExpr> | |
| <PostfixExpr> | |
| <PrimaryExpr> | |
| <VarRef> <TOKEN>$</TOKEN> | |
| <VarName> | |
| <EQName> | |
| <FunctionName> | |
| <EQName>id</EQName> | |
| </FunctionName> | |
| </EQName> | |
| </VarName> | |
| </VarRef> | |
| </PrimaryExpr> | |
| </PostfixExpr> | |
| </StepExpr> | |
| </RelativePathExpr> | |
| </PathExpr> | |
| </ValueExpr> | |
| </UnaryExpr> | |
| </CastExpr> | |
| </CastableExpr> | |
| </TreatExpr> | |
| </InstanceofExpr> | |
| </IntersectExceptExpr> | |
| </UnionExpr> | |
| </MultiplicativeExpr> | |
| </AdditiveExpr> | |
| </RangeExpr> | |
| </FTContainsExpr> | |
| </ComparisonExpr> | |
| </AndExpr> | |
| </OrExpr> | |
| </ExprSingle> | |
| </Expr> | |
| <TOKEN>]</TOKEN> | |
| </Predicate> | |
| </PredicateList> | |
| </AxisStep> | |
| </StepExpr> | |
| </RelativePathExpr> | |
| </PathExpr> | |
| </ValueExpr> | |
| </UnaryExpr> | |
| </CastExpr> | |
| </CastableExpr> | |
| </TreatExpr> | |
| </InstanceofExpr> | |
| </IntersectExceptExpr> | |
| </UnionExpr> | |
| </MultiplicativeExpr> | |
| </AdditiveExpr> | |
| </RangeExpr> | |
| </FTContainsExpr> | |
| </ComparisonExpr> | |
| </AndExpr> | |
| </OrExpr> | |
| </ExprSingle> | |
| </Expr> | |
| <TOKEN>}</TOKEN> | |
| </EnclosedExpr> | |
| </FunctionBody> | |
| </FunctionDecl> | |
| </AnnotatedDecl> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
..thanks for the real-time evaluation of our upcoming features ;) support for variables in rest:path annotations will be available in a few days.