<?xml version="1.0" encoding="utf-8"?>

<exprs>

	<!-- primary expressions -->
	<expr value="10">
		<ast normalized="true">
			<node name="Expr">	
				<node name="IntegerLiteral"/>
			</node>
		</ast>	
		<ast editable="true">
			<node name="Expr">	
				<node name="Step">	
					<node name="IntegerLiteral"/>
				</node>
			</node>
		</ast>		
		
	</expr>
	
	<expr value="-5">
		<ast normalized="true">
			<node name="Expr">	
				<node name="UnaryExpr">	
					<node name="IntegerLiteral"/>		
				</node>
			</node>
		</ast>
		<ast editable="true">
			<node name="Expr">	
				<node name="UnaryExpr">	
					<node name="IntegerLiteral"/>		
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="'chaine'">
		<ast>
			<node name="Expr">
				<node name="StringLiteral"/>
			</node>
		</ast>
	</expr>
	
	<expr value="$var">
		<ast>
			<node name="Expr">
				<node name="VarName"/>
			</node>
		</ast>
	</expr>
	
	<expr value="$fn:var">
		<ast>
			<node name="Expr">
				<node name="VarName"/>
			</node>
		</ast>
	</expr>

	
	<expr value="10[$var]">
		<ast>
			<node name="Expr">
				<node name="StepExpr">
					<!-- first child: the node test -->
					<node name="IntegerLiteral"/>
					<!-- second and following children: predicates -->
					<node name="VarName"/>
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="func()">
		<ast>
			<node name="Expr">
				<node name="FunctionCall"/>
				<!-- no child since no parameters -->
			</node>
		</ast>
	</expr>
	
	<expr value="func2('param1',56)">
		<ast>
			<node name="Expr">
				<node name="FunctionCall">
					<!-- children correspond to function call parameters -->
					<node name="StringLiteral"/>
					<node name="IntegerLiteral"/>
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="func3(toto[@titi='val'],56)">
		<ast>
			<node name="Expr">
				<node name="FunctionCall">
					<!--node name="PathExpr"-->
						<node name="StepExpr">
							<node name="NameTest"/>
							<node name="ComparisonExpr">
								<!--node name="PathExpr"-->
									<node name="StepExpr">
										<node name="NameTest"/>
									</node>
								<!--/node-->
								<node name="StringLiteral"/>
							</node>				
						</node>
					<!--/node-->					
					<node name="IntegerLiteral"/>
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="generated-id(/)">
		<ast>
			<node name="Expr">
				<node name="FunctionCall">
						<node name="FunctionCall">
							<node name="StepExpr">
								<node name="AnyKindTest"/>
							</node>
						</node>
				</node>
			</node>	
		</ast>
	</expr>
	
	
	<expr value="toto">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->	
					<node name="StepExpr">				
						<node name="NameTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	
	
	<expr value="(10)" normalized-round-trip="10">
		<ast>
			<node name="Expr">				
				<node name="IntegerLiteral"/>
			</node>
		</ast>
	</expr>
		
	<expr value="(toto,10)" normalized-round-trip="toto,10">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
				<!--/node-->
				<node name="IntegerLiteral"/>
			</node>
		</ast>
	</expr>
	
	<expr value="(toto, (), (10, ('str', -5)))" normalized-round-trip="toto,10,'str',-5">
		<ast>
			<node name="Expr">		
				<node name="StepExpr">				
					<node name="NameTest"/>
				</node>
				<node name="IntegerLiteral"/>
				<node name="StringLiteral"/>
				<node name="UnaryExpr">
					<node name="IntegerLiteral"/>
				</node>
			</node>
		</ast>
	</expr>
	
	

	
	<expr value="xs:toto">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="*">		
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	<expr value="xs:*">			
		<ast>
			<node name="Expr">				
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
			</node>
		</ast>
	</expr>
	<expr value="*:toto">			
		<ast>
			<node name="Expr">
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
			</node>
		</ast>
	</expr>
	
	<!-- kindtest -->
	<expr value="text()">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="TextTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="comment()">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="CommentTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="processing-instruction()">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="PITest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="processing-instruction(target)" >
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="PITest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	 
	<expr value="processing-instruction('target')" normalized-round-trip="processing-instruction(target)">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="PITest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="node()">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="AnyKindTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="element()">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="ElementTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
		
	<expr value="element(*)" normalized-round-trip="element()">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="ElementTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="element(person, surgeon nillable)">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="ElementTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="element(*, surgeon nillable)">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="ElementTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="element(person)">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="ElementTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	
	<expr value="element(person, *)" normalized-round-trip="element(person)">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="ElementTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="attribute(@*)" normalized-round-trip="attribute()">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="AttributeTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="attribute(@price, currency)">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="AttributeTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="attribute(@price, *)" normalized-round-trip="attribute(@price)">
		<ast>
			<node name="Expr">
					<!--node name="PathExpr"-->
				<node name="StepExpr">
						<node name="AttributeTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="document-node()">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="DocumentTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>	
	
	<expr value="document-node(element(surgeon))">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="DocumentTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>



	<expr value=".">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<!--node name="StepExpr"-->
						<node name="Dot"/>
					<!--/node-->
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	
	<expr value="@toto">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="..">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="AnyKindTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>

	
	<!-- axis -->
	<expr value="ancestor::toto">
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
	
	<expr value="attribute::*" normalized-round-trip="@*"> <!-- the abbreviate notation is used for tests -->
		<ast>
			<node name="Expr">
				<!--node name="PathExpr"-->
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
				<!--/node-->
			</node>
		</ast>
	</expr>
		
	<!-- path expr -->
	<expr value="/" non-abbreviated-round-trip="fn:root(self::node())">
		<ast normalized="true">
			<node name="Expr">
						<node name="FunctionCall">
							<node name="StepExpr">
								<node name="AnyKindTest"/>
							</node>
						</node>
			</node>
		</ast>
	</expr>
	
	<expr value="toto/titi">
		<ast>
			<node name="Expr">
				<node name="PathExpr">
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>					
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="/abs/titi" non-abbreviated-round-trip="fn:root(self::node())/child::abs/child::titi">
		<ast>
			<node name="Expr">
				<node name="PathExpr">
						<node name="FunctionCall">
							<node name="StepExpr">
								<node name="AnyKindTest"/>
							</node>
						</node>
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>					
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="rel//titi">
		<ast>
			<node name="Expr">
				<node name="PathExpr">
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
					<node name="StepExpr">
						<node name="AnyKindTest"/>
					</node>	
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>					
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="rel//titi/tutu//tata">
		<ast>
			<node name="Expr">
				<node name="PathExpr">
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
					<node name="StepExpr">
						<node name="AnyKindTest"/>
					</node>	
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
					<node name="StepExpr">
						<node name="AnyKindTest"/>
					</node>	
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>					
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="//abs/self::titi">
		<ast>
			<node name="Expr">
				<node name="PathExpr">
					<node name="FunctionCall">
						<node name="StepExpr">
							<node name="AnyKindTest"/>
						</node>
					</node>
					<node name="StepExpr">
						<node name="AnyKindTest"/>
					</node>	
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>									
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="//abs[//toto]/self::titi">
		<ast>
			<node name="Expr">
				<node name="PathExpr">
					<node name="FunctionCall">
						<node name="StepExpr">
							<node name="AnyKindTest"/>
						</node>
					</node>
					<node name="StepExpr">
						<node name="AnyKindTest"/>
					</node>	
					<node name="StepExpr">
						<node name="NameTest"/>
						<node name="PathExpr">
							<node name="FunctionCall">
								<node name="StepExpr">
									<node name="AnyKindTest"/>
								</node>
							</node>
							<node name="StepExpr">
								<node name="AnyKindTest"/>
							</node>	
							<node name="StepExpr">
								<node name="NameTest"/>
							</node>
						</node>
					</node>
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>									
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="toto/$varvar">
		<ast>
			<node name="Expr">
				<node name="PathExpr">
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>							
					<node name="VarName"/>					
				</node>	
			</node>
		</ast>	
	</expr>
	
	
	<expr value="$varvar/toto">
		<ast>
			<node name="Expr">
				<node name="PathExpr">
					<node name="VarName"/>
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>												
				</node>	
			</node>
		</ast>
	</expr>
	
	<expr value="a/(b)/c" normalized-round-trip="a/b/c">
		<ast>
			<node name="Expr">
				<node name="PathExpr">
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>	
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>	
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>												
				</node>	
			</node>
		</ast>
	</expr>
	
	<expr value="a/func()[5]/func2()">
		<ast>
			<node name="Expr">
				<node name="PathExpr">
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>	
					<node name="StepExpr">
						<node name="FunctionCall"/>
						<node name="IntegerLiteral"/>
					</node>	
					<node name="FunctionCall"/>												
				</node>	
			</node>
		</ast>
	</expr>
	
	<!-- Union -->
	<expr value="tutu/(toto|titi)">
		<ast>
			<node name="Expr">
				<node name="PathExpr">
					<node name="StepExpr">
						<node name="NameTest"/>
					</node>
					<node name="UnionExpr">
							<node name="StepExpr">
								<node name="NameTest"/>
							</node>								
							
							<node name="StepExpr">
								<node name="NameTest"/>
							</node>												
					</node>					
				</node>	
			</node>
		</ast>	
	</expr>
	
	
	<expr value="tutu/toto|titi">
		<ast>
			<node name="Expr">
			
				<node name="UnionExpr">
					<node name="PathExpr">
			
						<node name="StepExpr">
							<node name="NameTest"/>
						</node>		
						<node name="StepExpr">
							<node name="NameTest"/>							
						</node>						
					</node>														
						<node name="StepExpr">
							<node name="NameTest"/>
						</node>							
				</node>					
			</node>
		</ast>
	</expr>
	
	
	<!-- predicate -->
	<expr value="toto[titi]">
		<ast>
			<node name="Expr">
					<node name="StepExpr">
						<node name="NameTest"/>
							<node name="StepExpr">
								<node name="NameTest"/>								
							</node>
					</node>		
			</node>
		</ast>
	</expr>
	
	<expr value="toto[10]">
		<ast>
			<node name="Expr">
					<node name="StepExpr">
						<node name="NameTest"/>
						<node name="IntegerLiteral"/>
					</node>		
			</node>
		</ast>
	</expr>
	
	<expr value="toto[10][descendant::tutu]">
		<ast>
			<node name="Expr">
					<node name="StepExpr">
						<node name="NameTest"/>
						<node name="IntegerLiteral"/>
							<node name="StepExpr">
								<node name="NameTest"/>								
							</node>											
					</node>		
			</node>
		</ast>
	</expr>
	
	<!-- expr sequence -->
	<expr value="toto,50,'chaine'">
		<ast>
			<node name="Expr">
					<node name="StepExpr">
						<node name="NameTest"/>						
					</node>		
				<node name="IntegerLiteral"/>
				<node name="StringLiteral"/>
			</node>
		</ast>
	</expr>
	
	<!-- Arithmetic expressions -->
	
	<expr value="((45+23)-10)" normalized-round-trip="45+23-10">
		<ast>
			<node name="Expr">
				<node name="AdditiveExpr">
					<node name="AdditiveExpr">
						<node name="IntegerLiteral"/>
						<node name="IntegerLiteral"/>				
					</node>		
					<node name="IntegerLiteral"/>				
				</node>		
			</node>
		</ast>
	</expr>
	
	<expr value="toto[45+23]">
		<ast>
			<node name="Expr">
					<node name="StepExpr">
						<node name="NameTest"/>		
						<node name="AdditiveExpr">
							<node name="IntegerLiteral"/>
							<node name="IntegerLiteral"/>				
						</node>		
					</node>		
					
			</node>
		</ast>
	</expr>
	
	<expr value="-3">
		<ast>
			<node name="Expr">
				<node name="UnaryExpr">
					<node name="IntegerLiteral"/>					
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="+3">
		<ast>
			<node name="Expr">
				<node name="UnaryExpr">
					<node name="IntegerLiteral"/>					
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="4 div 12">
		<ast>
			<node name="Expr">
				<node name="MultiplicativeExpr">
					<node name="IntegerLiteral"/>	
					<node name="IntegerLiteral"/>	
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="@siteId=0 and (@cobrandId=24 or @cobrandId=22)">
		<ast>
			<node name="Expr">
				<node name="AndExpr">
					<node name="ComparisonExpr">
							<node name="StepExpr">
								<node name="NameTest"/>	
							</node>
					<node name="IntegerLiteral"/>						
					</node>
					<node name="OrExpr">	
					<node name="ComparisonExpr">
							<node name="StepExpr">
								<node name="NameTest"/>	
							</node>
						<node name="IntegerLiteral"/>
					</node>
					<node name="ComparisonExpr">
							<node name="StepExpr">
								<node name="NameTest"/>	
							</node>
						<node name="IntegerLiteral"/>
					</node>
					</node>
				</node>
			</node>
		</ast>
	</expr>
	
	
	<expr value="10[. > $var] + 5" normalized-round-trip="10[.>$var]+5">
		<ast>
			<node name="Expr">
				<node name="AdditiveExpr">
					<node name="StepExpr">
						<node name="IntegerLiteral"/>
						<node name="ComparisonExpr">								
							<node name="Dot"/>
							<node name="VarName"/>
						</node>
					</node>			
					<node name="IntegerLiteral"/>
				</node>		
			</node>
		</ast>
	</expr>
	
	<!-- And Or expr -->
	
	<expr value="a and b">
		<ast>
			<node name="Expr">
				<node name="AndExpr">
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="a or b">
		<ast>
			<node name="Expr">
				<node name="OrExpr">
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
				</node>
			</node>
		</ast>
	</expr>
	
	<!-- Comparison expr -->
	
	<expr value="a=b">
		<ast>
			<node name="Expr">
				<node name="ComparisonExpr">
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
				</node>
			</node>
		</ast>
	</expr>
	
	
	<!-- Range expr -->
	
	<expr value="1 to 100">
		<ast>
			<node name="Expr">
				<node name="RangeExpr">
					<node name="IntegerLiteral"/>
					<node name="IntegerLiteral"/>		
				</node>
			</node>
		</ast>
	</expr>
	
	
	<expr value="a&lt;&lt;b">
		<ast>
			<node name="Expr">
				<node name="ComparisonExpr">
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
				</node>
			</node>			
		</ast>
	</expr>
	
	<!-- Conditionnal expr -->
	
	<expr value="if (a) then b else c">
		<ast>
			<node name="Expr">
				<node name="IfExpr">
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
				</node>
			</node>			
		</ast>
	</expr>
	
	<!-- Instanceof expr -->
	
	<expr value="$var instance of empty()">
		<ast>
			<node name="Expr">
				<node name="InstanceofExpr">
					<node name="VarName"/>
					<node name="Empty"/>
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="$var instance of processing-instruction()">
		<ast>
			<node name="Expr">
				<node name="InstanceofExpr">
					<node name="VarName"/>
					<node name="PITest"/>
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="$var instance of node()+">
		<ast>
			<node name="Expr">
				<node name="InstanceofExpr">
					<node name="VarName"/>
					<node name="AnyKindTest"/>
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="5 instance of integer">
		<ast>
			<node name="Expr">
				<node name="InstanceofExpr">
					<node name="IntegerLiteral"/>
					<node name="QNameForSequenceType"/>
				</node>
			</node>
		</ast>
	</expr>
	
	
	<!-- Cast as expr -->
	
	<expr value="'10' cast as integer">
		<ast>
			<node name="Expr">
				<node name="CastExpr">				
					<node name="StringLiteral"/>
					<node name="SingleType"/>
				</node>
			</node>
		</ast>
	</expr>
	
	<expr value="'10' cast as integer?">
		<ast>
			<node name="Expr">
				<node name="CastExpr">				
					<node name="StringLiteral"/>
					<node name="SingleType"/>
				</node>
			</node>
		</ast>
	</expr>
	
	<!-- Treat as expr -->
	
	<expr value="'10' treat as integer">
		<ast>
			<node name="Expr">
				<node name="TreatExpr">
					<node name="StringLiteral"/>
					<node name="QNameForSequenceType"/>
				</node>
			</node>
		</ast>
	</expr>
	
	<!-- Castable as expr -->
	
	<expr value="5 castable as integer">
		<ast>
			<node name="Expr">
				<node name="CastableExpr">
					<node name="IntegerLiteral"/>
					<node name="SingleType"/>
				</node>
			</node>
		</ast>
	</expr>
	
	<!-- Constructor functions -->
	
	<expr value="date('2000-01-01')">
		<ast>
			<node name="Expr">
				<node name="FunctionCall">
					<node name="StringLiteral"/>
				</node>
			</node>
		</ast>
	</expr>

	<!-- For expr -->
	
	<expr value="for $a in a return b">
		<ast>
			<node name="Expr">
				<node name="ForExpr">
					<!--node name="VarName"/>
					<node name="PathExpr">
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
					</node>
					<node name="PathExpr">
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
					</node-->					
				</node>
			</node>			
		</ast>
	</expr>
	
	<expr value="for $a in a, $b in b return ($a,$b)">
		<ast>
			<node name="Expr">
				<node name="ForExpr">
					<!--node name="VarName"/>
					<node name="PathExpr">
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
					</node>	
					<node name="VarName"/>
					<node name="PathExpr">
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
					</node>
					<node name="Expr">
						<node name="PathExpr">
							<node name="VarName"/>		
						</node>	
						<node name="PathExpr">
							<node name="VarName"/>
						</node>				
					</node-->
				</node>
			</node>			
		</ast>
	</expr>
	
	<!-- Quantified expr -->
	
	<expr value="some $a in a satisfies b">
		<ast>
			<node name="Expr">
				<node name="Some">
					<!--node name="Variable"/>
					<node name="PathExpr">
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
					</node>
					<node name="PathExpr">
						<node name="StepExpr">
							<node name="NameTest"/>	
						</node>
					</node-->					
				</node>
			</node>			
		</ast>
	</expr>
	
	
	<!-- Match pattern expr -->
	
	<expr value="/" pattern="true">
		<ast>
			<node name="PathPattern"/>
		</ast>
	</expr>
	
	
	<expr value="a//b" pattern="true">
		<ast>
				<node name="PathPattern">
					<node name="PatternStep">
						<node name="NameTest"/>	
					</node>
					<node name="PatternStep">
						<node name="AnyKindTest"/>
					</node>
					<node name="PatternStep">
						<node name="NameTest"/>	
					</node>			
				</node>			
		</ast>
	</expr>
	
	
	<expr value="a" pattern="true">
		<ast>
				<node name="PatternStep">
					<node name="NameTest"/>	
				</node>			
		</ast>
	</expr>
	
	<expr value="/a" pattern="true">
		<ast>
			<node name="PathPattern">
				<node name="PatternStep">
					<node name="NameTest"/>	
				</node>			
			</node>
		</ast>
	</expr>
	
	<expr value="/a/b" pattern="true">
		<ast>
			<node name="PathPattern">
				<node name="PatternStep">
					<node name="NameTest"/>	
				</node>	
				<node name="PatternStep">
					<node name="NameTest"/>	
				</node>			
			</node>
		</ast>
	</expr>
		
		
	
	<expr value="a|b" pattern="true">
		<ast>
			<node name="Pattern">
					<node name="PatternStep">
						<node name="NameTest"/>	
					</node>
					<node name="PatternStep">
						<node name="NameTest"/>	
					</node>
			</node>
		</ast>
	</expr>
	
	<expr value="id('a')" pattern="true">
		<ast>
			<node name="IdKeyPattern">
				<node name="StringLiteral"/>	
			</node>
		</ast>
	</expr>
	
	<!-- regression test expressions -->
	
	<!--expr value="a[1 &lt; 2 &lt; 3]" xpath-compatibility="1.0">
	</expr-->
	
</exprs>