Nichtterminale Symbole (Teil 1)
[30] | Module | ::= | VersionDecl? (MainModule | LibraryModule) |
[31] | MainModule | ::= | Prolog QueryBody |
[32] | LibraryModule | ::= | ModuleDecl Prolog |
[33] | ModuleDecl | ::= | <"module" "namespace"> NCName "=" StringLiteral Separator |
[34] | Prolog | ::= | ((NamespaceDecl | XMLSpaceDecl | DefaultNamespaceDecl | DefaultCollationDecl | BaseURIDecl | SchemaImport | ModuleImport | VarDecl | ValidationDecl | FunctionDecl) Separator)* |
[35] | Separator | ::= | ";" |
[36] | VersionDecl | ::= | <"xquery" "version" StringLiteral> Separator |
[37] | ModuleImport | ::= | <"import" "module" ("namespace" NCName "=")? StringLiteral <"at" StringLiteral>? |
[38] | VarDecl | ::= | <"declare" "variable" "$" VarName TypeDeclaration? (("{" Expr "}") | "external")> |
[39] | QueryBody | ::= | Expr |
[40] | Expr | ::= | ExprSingle ("," ExprSingle)* |
[41] | ExprSingle | ::= | FLWORExpr | QuantifiedExpr | TypeswitchExpr | IfExpr | OrExpr |
[42] | FLWORExpr | ::= | (ForClause | LetClause)+ WhereClause? OrderByClause? "return" ExprSingle |
[43] | ForClause | ::= | <"for" "$"> VarName TypeDeclaration? PostitionalVar? "in" ExprSingle ("," "$" VarName TypeDeclaration? PositionalVar? "in" ExprSingle)* |
[44] | PositionalVar | ::= | "at" "$" VarName |
[45] | LetClause | ::= | <"let" "$"> VarName TypeDeclaration ? ":=" ExprSingle ("," "$" VarName TypeDeclaration ? ":=" ExprSingle)* |
[46] | WhereClause | ::= | "where" Expr |
[47] | OrderByClause | ::= | (<"order" "by"> | <"stable" "order" "by">) OrderSpecList |
[48] | OrderSpecList | ::= | OrderSpec ("," OrderSpec)* |
[49] | OrderSpec | ::= | ExprSingle OrderModifier |
[50] | OrderModifier | ::= | ("ascending" | "descending")? (<"empty" "greatest"> | <"empty" "least">)? ("collation" StringLiteral )? |
[51] | QuantifiedExpr | ::= | (<"some" "$"> | <"every" "$">) VarName TypeDeclaration ? "in" ExprSingle ("," "$" VarName TypeDeclaration? "in" ExprSingle)* "satisfies" ExprSingle |
[52] | TypeswitchExpr | ::= | <"typeswitch" "("> Expr ")" CaseClause + "default" ("$" VarName)? "return" ExprSingle |
[53] | CaseClause | ::= | "case" ("$" VarName "as")? SequenceType "return" ExprSingle |
[54] | IfExpr | ::= | <"if" "("> Expr ")" "then" ExprSingle "else" ExprSingle |
[55] | OrExpr | ::= | AndExpr ( "or" AndExpr )* |
[56] | AndExpr | ::= | InstanceofExpr ( "and" InstanceofExpr )* |
[57] | InstanceofExpr | ::= | TreatExpr ( <"instance" "of"> SequenceType )? |
[58] | TreatExpr | ::= | CastableExpr ( <"treat" "as"> SequenceType )? |
[59] | CastableExpr | ::= | CastExpr ( <"castable" "as"> SingleType )? |
[60] | CastExpr | ::= | ComparisonExpr ( <"cast" "as"> SingleType )? |
[61] | ComparisonExpr | ::= | RangeExpr ( (ValueComp | GeneralComp | NodeComp ) RangeExpr)? |
[62] | RangeExpr | ::= | AdditiveExpr ( "to" AdditiveExpr )? |
[63] | AdditiveExpr | ::= | MultiplicativeExpr ( ("+" | "-") MultiplicativeExpr )* |
[64] | MultiplicativeExpr | ::= | UnaryExpr ( ("*" | "div" | "idiv" | "mod") UnaryExpr )* |
[65] | UnaryExpr | ::= | ("-" | "+")* UnionExpr |
[66] | UnionExpr | ::= | IntersectExceptExpr ( ("union" | "|") IntersectExceptExpr )* |
[67] | IntersectExceptExpr | ::= | ValueExpr ( ("intersect" | "except") ValueExpr )* |
[68] | ValueExpr | ::= | ValidateExpr | PathExpr |
[69] | PathExpr | ::= | ("/" RelativePathExpr?) | ("//" RelativePathExpr) | RelativePathExpr |
[70] | RelativePathExpr | ::= | StepExpr (("/" | "//") StepExpr)* |
[71] | StepExpr | ::= | AxisStep | FilterStep |
[72] | AxisStep | ::= | (ForwardStep | ReverseStep) Predicates |
[73] | FilterStep | ::= | PrimaryExpr Predicates |
[74] | ContextItemExpr | ::= | "." |
[75] | PrimaryExpr | ::= | Literal | VarRef | ParenthesizedExpr | ContextItemExpr | FunctionCall | Constructor |
[76] | VarRef | ::= | "$" VarName |
[77] | Predicates | ::= | ("[" Expr "]")* |
[78] | ValidateExpr | ::= | (<"validate" "{"> | (<"validate" "global"> "{") | (<"validate" "context"> SchemaContextLoc "{") | (<"validate" SchemaMode > SchemaContext ? "{")) Expr "}" |
[79] | SchemaContext | ::= | ("context" SchemaContextLoc) | "global" |
[80] | Constructor | ::= | DirElemConstructor | ComputedConstructor | XmlComment | XmlPI | CdataSection |
[81] | ComputedConstructor | ::= | CompElemConstructor | CompAttrConstructor | CompDocConstructor | CompTextConstructor | CompXmlPI | CompXmlComment | CompNSConstructor |
[82] | GeneralComp | ::= | "=" | "!=" | "<" | "<=" | ">" | ">=" |
[83] | ValueComp | ::= | "eq" | "ne" | "lt" | "le" | "gt" | "ge" |
[84] | NodeComp | ::= | "is" | "<<" | ">>" |
[85] | ForwardStep | ::= | (ForwardAxis NodeTest) | AbbrevForwardStep |
[86] | ReverseStep | ::= | (ReverseAxis NodeTest) | AbbrevReverseStep |
[87] | AbbrevForwardStep | ::= | "@"? NodeTest |
[88] | AbbrevReverseStep | ::= | ".." |
[89] | ForwardAxis | ::= | <"child" "::"> | <"descendant" "::"> | <"attribute" "::"> | <"self" "::"> | <"descendant-or-self" "::"> | <"following-sibling" "::"> | <"following" "::"> |
[90] | ReverseAxis | ::= | <"parent" "::"> | <"ancestor" "::"> | <"preceding-sibling" "::"> | <"preceding" "::"> | <"ancestor-or-self" "::"> |
Quelle: "XQuery – Grundlagen und fortgeschrittene Methoden", dpunkt-Verlag, Heidelberg (2004)
<< zurück | vor >> |