put ast_ids into impl namespace

This commit is contained in:
jez_higgins 2005-08-16 17:54:20 +00:00
parent f231736bf5
commit 5c5018665d
4 changed files with 255 additions and 251 deletions

View file

@ -5,6 +5,8 @@ namespace Arabica
{
namespace XPath
{
namespace impl
{
enum
{
@ -99,6 +101,8 @@ enum
UnaryMinusOperator_id
};
} // namespace impl
} // namespace XPath
} // namespace Arabica

View file

@ -185,107 +185,107 @@ struct xpath_grammar_definition
UnaryMinusOperator = ch_p('-');
} // xpath_grammar_definition
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<QName_id> > QName;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Prefix_id> > Prefix;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<LocalPart_id> > LocalPart;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<NCName_id> > NCName;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<NCNameChar_id> > NCNameChar;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::QName_id> > QName;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Prefix_id> > Prefix;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::LocalPart_id> > LocalPart;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::NCName_id> > NCName;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::NCNameChar_id> > NCNameChar;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<AxisName_id> > AxisName;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<NodeType_id> > NodeType;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::AxisName_id> > AxisName;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::NodeType_id> > NodeType;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<LocationPath_id> > LocationPath;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<AbsoluteLocationPath_id> > AbsoluteLocationPath;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<RelativeLocationPath_id> > RelativeLocationPath;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::LocationPath_id> > LocationPath;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::AbsoluteLocationPath_id> > AbsoluteLocationPath;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::RelativeLocationPath_id> > RelativeLocationPath;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Step_id> > Step;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<AxisSpecifier_id> > AxisSpecifier;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Step_id> > Step;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::AxisSpecifier_id> > AxisSpecifier;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<NodeTest_id> > NodeTest;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::NodeTest_id> > NodeTest;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Predicate_id> > Predicate;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<PredicateExpr_id> > PredicateExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Predicate_id> > Predicate;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::PredicateExpr_id> > PredicateExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<AbbreviatedAbsoluteLocationPath_id> > AbbreviatedAbsoluteLocationPath;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<AbbreviatedStep_id> > AbbreviatedStep;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<AbbreviatedAxisSpecifier_id> > AbbreviatedAxisSpecifier;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::AbbreviatedAbsoluteLocationPath_id> > AbbreviatedAbsoluteLocationPath;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::AbbreviatedStep_id> > AbbreviatedStep;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::AbbreviatedAxisSpecifier_id> > AbbreviatedAxisSpecifier;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Expr_id> > Expr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<PrimaryExpr_id> > PrimaryExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Expr_id> > Expr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::PrimaryExpr_id> > PrimaryExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<FunctionCall_id> > FunctionCall;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Argument_id> > Argument;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::FunctionCall_id> > FunctionCall;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Argument_id> > Argument;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<UnionExpr_id> > UnionExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<PathExpr_id> > PathExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<FilterExpr_id> > FilterExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::UnionExpr_id> > UnionExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::PathExpr_id> > PathExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::FilterExpr_id> > FilterExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<OrExpr_id> > OrExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<AndExpr_id> > AndExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<EqualityExpr_id> > EqualityExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<RelationalExpr_id> > RelationalExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::OrExpr_id> > OrExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::AndExpr_id> > AndExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::EqualityExpr_id> > EqualityExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::RelationalExpr_id> > RelationalExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<AdditiveExpr_id> > AdditiveExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<MultiplicativeExpr_id> > MultiplicativeExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<UnaryExpr_id> > UnaryExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::AdditiveExpr_id> > AdditiveExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::MultiplicativeExpr_id> > MultiplicativeExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::UnaryExpr_id> > UnaryExpr;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Literal_id> > Literal;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Number_id> > Number;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Digits_id> > Digits;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<MultiplyOperator_id> > MultiplyOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<FunctionName_id> > FunctionName;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<VariableReference_id> > VariableReference;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<NameTest_id> > NameTest;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<S_id> > S; // ExprWhitespace
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Literal_id> > Literal;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Number_id> > Number;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Digits_id> > Digits;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::MultiplyOperator_id> > MultiplyOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::FunctionName_id> > FunctionName;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::VariableReference_id> > VariableReference;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::NameTest_id> > NameTest;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::S_id> > S; // ExprWhitespace
// bonus bits
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Slash_id> > Slash;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<SlashSlash_id> > SlashSlash;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Slash_id> > Slash;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::SlashSlash_id> > SlashSlash;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<AncestorOrSelf_id> > AncestorOrSelf;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Ancestor_id> > Ancestor;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Attribute_id> > Attribute;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Child_id> > Child;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<DescendantOrSelf_id> > DescendantOrSelf;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Descendant_id> > Descendant;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<FollowingSibling_id> > FollowingSibling;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Following_id> > Following;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Namespace_id> > Namespace;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Parent_id> > Parent;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<PrecedingSibling_id> > PrecedingSibling;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Preceding_id> > Preceding;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Self_id> > Self;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::AncestorOrSelf_id> > AncestorOrSelf;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Ancestor_id> > Ancestor;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Attribute_id> > Attribute;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Child_id> > Child;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::DescendantOrSelf_id> > DescendantOrSelf;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Descendant_id> > Descendant;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::FollowingSibling_id> > FollowingSibling;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Following_id> > Following;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Namespace_id> > Namespace;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Parent_id> > Parent;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::PrecedingSibling_id> > PrecedingSibling;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Preceding_id> > Preceding;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Self_id> > Self;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Comment_id> > Comment;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Text_id> > Text;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<ProcessingInstruction_id> > ProcessingInstruction;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Node_id> > Node;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<AnyName_id> > AnyName;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Comment_id> > Comment;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Text_id> > Text;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::ProcessingInstruction_id> > ProcessingInstruction;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Node_id> > Node;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::AnyName_id> > AnyName;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<SelfSelect_id> > SelfSelect;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<ParentSelect_id> > ParentSelect;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::SelfSelect_id> > SelfSelect;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::ParentSelect_id> > ParentSelect;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<LeftSquare_id> > LeftSquare;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<RightSquare_id> > RightSquare;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::LeftSquare_id> > LeftSquare;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::RightSquare_id> > RightSquare;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<LeftBracket_id> > LeftBracket;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<RightBracket_id> > RightBracket;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::LeftBracket_id> > LeftBracket;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::RightBracket_id> > RightBracket;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<PlusOperator_id> > PlusOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<MinusOperator_id> > MinusOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<ModOperator_id> > ModOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<DivOperator_id> > DivOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<EqualsOperator_id> > EqualsOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<NotEqualsOperator_id> > NotEqualsOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<LessThanOperator_id> > LessThanOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<LessThanEqualsOperator_id> > LessThanEqualsOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<GreaterThanOperator_id> > GreaterThanOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<GreaterThanEqualsOperator_id> > GreaterThanEqualsOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::PlusOperator_id> > PlusOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::MinusOperator_id> > MinusOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::ModOperator_id> > ModOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::DivOperator_id> > DivOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::EqualsOperator_id> > EqualsOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::NotEqualsOperator_id> > NotEqualsOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::LessThanOperator_id> > LessThanOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::LessThanEqualsOperator_id> > LessThanEqualsOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::GreaterThanOperator_id> > GreaterThanOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::GreaterThanEqualsOperator_id> > GreaterThanEqualsOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<OrOperator_id> > OrOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<AndOperator_id> > AndOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<UnionOperator_id> > UnionOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<UnaryMinusOperator_id> > UnaryMinusOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::OrOperator_id> > OrOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::AndOperator_id> > AndOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::UnionOperator_id> > UnionOperator;
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::UnaryMinusOperator_id> > UnaryMinusOperator;
}; // xpath_grammar_definition
@ -298,7 +298,7 @@ struct xpath_grammar : public boost::spirit::grammar<xpath_grammar>
{
} // definition
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<LocationPath_id> > const&
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::LocationPath_id> > const&
start() const
{
return xpath_grammar_definition<ScannerT>::LocationPath;
@ -315,7 +315,7 @@ struct xpath_grammar_expr : public boost::spirit::grammar<xpath_grammar_expr>
{
} // definition
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<Expr_id> > const&
boost::spirit::rule<ScannerT, boost::spirit::parser_tag<impl::Expr_id> > const&
start() const
{
return xpath_grammar_definition<ScannerT>::Expr;

View file

@ -187,14 +187,14 @@ public:
std::vector<XPathExpression<std::string>*> preds;
while((node != end) && (getNodeId(node) == Predicate_id))
while((node != end) && (getNodeId(node) == impl::Predicate_id))
{
node_iter_t c = node->children.begin();
assert(getNodeId(c) == LeftSquare_id);
assert(getNodeId(c) == impl::LeftSquare_id);
++c;
preds.push_back(compile_expression(c, context));
++c;
assert(getNodeId(c) == RightSquare_id);
assert(getNodeId(c) == impl::RightSquare_id);
++node;
} // if ...
@ -217,19 +217,19 @@ private:
switch(id)
{
case Slash_id:
case SelfSelect_id:
case impl::Slash_id:
case impl::SelfSelect_id:
return SELF; // don't advance node, SelfSelect is axis specifier and node test in one
case ParentSelect_id:
case impl::ParentSelect_id:
return PARENT;
case SlashSlash_id:
case impl::SlashSlash_id:
return DESCENDANT_OR_SELF;
case AbbreviatedAxisSpecifier_id:
case impl::AbbreviatedAxisSpecifier_id:
++node;
return ATTRIBUTE;
case AxisSpecifier_id:
case impl::AxisSpecifier_id:
// skip on to the next bit
break;
@ -242,32 +242,32 @@ private:
++node;
switch(axis)
{
case AncestorOrSelf_id:
case impl::AncestorOrSelf_id:
return ANCESTOR_OR_SELF;
case Ancestor_id:
case impl::Ancestor_id:
return ANCESTOR;
case AbbreviatedAxisSpecifier_id:
case Attribute_id:
case impl::AbbreviatedAxisSpecifier_id:
case impl::Attribute_id:
return ATTRIBUTE;
case Child_id:
case impl::Child_id:
return CHILD;
case DescendantOrSelf_id:
case impl::DescendantOrSelf_id:
return DESCENDANT_OR_SELF;
case Descendant_id:
case impl::Descendant_id:
return DESCENDANT;
case FollowingSibling_id:
case impl::FollowingSibling_id:
return FOLLOWING_SIBLING;
case Following_id:
case impl::Following_id:
return FOLLOWING;
case Namespace_id:
case impl::Namespace_id:
return NAMESPACE;
case Parent_id:
case impl::Parent_id:
return PARENT;
case PrecedingSibling_id:
case impl::PrecedingSibling_id:
return PRECEDING_SIBLING;
case Preceding_id:
case impl::Preceding_id:
return PRECEDING;
case Self_id:
case impl::Self_id:
return SELF;
} // switch ...
@ -281,7 +281,7 @@ private:
switch(id)
{
case NodeTest_id:
case impl::NodeTest_id:
{
node_iter_t c = node->children.begin();
NodeTest* t = getTest(c, namespaceContext);
@ -289,7 +289,7 @@ private:
return t;
} // case NodeTest_id
case QName_id:
case impl::QName_id:
{
node_iter_t c = node->children.begin();
std::string prefix(c->value.begin(), c->value.end());
@ -300,29 +300,29 @@ private:
return new QNameNodeTest(uri, name);
} //case QName_id
case NCName_id:
case impl::NCName_id:
{
std::string name(node->value.begin(), node->value.end());
++node;
return new NameNodeTest(name);
} // case NameNodeTest
case Comment_id:
case impl::Comment_id:
{
++node;
return new CommentNodeTest();
} // case CommentTest_id
case Text_id:
case impl::Text_id:
{
++node;
return new TextNodeTest();
} // case Text_id
case ProcessingInstruction_id:
case impl::ProcessingInstruction_id:
{
++node;
if(getNodeId(node) != Literal_id) // not sure if this is always safe
if(getNodeId(node) != impl::Literal_id) // not sure if this is always safe
return new ProcessingInstructionNodeTest();
std::string target(node->value.begin(), node->value.end());
@ -330,25 +330,25 @@ private:
return new ProcessingInstructionNodeTest(target);
} // case ProcessingInstruction_id
case SlashSlash_id:
case Node_id:
case impl::SlashSlash_id:
case impl::Node_id:
{
++node;
return new AnyNodeTest();
} // case Node_id
case Slash_id:
case impl::Slash_id:
return new RootNodeTest();
case AnyName_id:
case SelfSelect_id:
case ParentSelect_id:
case impl::AnyName_id:
case impl::SelfSelect_id:
case impl::ParentSelect_id:
{
++node;
return new StarNodeTest();
} // case AnyName_id:
case NameTest_id:
case impl::NameTest_id:
{
node_iter_t prefixNode = node->children.begin();
++node;

View file

@ -25,7 +25,7 @@ long Arabica::XPath::getNodeId(node_iter_t const& node)
node_iter_t& Arabica::XPath::skipWhitespace(node_iter_t& node)
{
while(getNodeId(node) == S_id)
while(getNodeId(node) == impl::S_id)
++node;
return node;
} // skipWhitespace
@ -70,12 +70,12 @@ XPathExpression<std::string>* createFunction(node_iter_t const& i, CompilationCo
std::string name(c->value.begin(), c->value.end());
++c;
skipWhitespace(c);
assert(getNodeId(c) == LeftBracket_id);
assert(getNodeId(c) == impl::LeftBracket_id);
++c;
skipWhitespace(c);
std::vector<XPathExpressionPtr<std::string> > args;
while(getNodeId(c) != RightBracket_id)
while(getNodeId(c) != impl::RightBracket_id)
{
XPathExpressionPtr<std::string> arg(compile_expression(c++, context));
args.push_back(arg);
@ -117,46 +117,46 @@ XPathExpression<std::string>* createBinaryExpression(node_iter_t const& i, Compi
switch(op)
{
case PlusOperator_id:
case impl::PlusOperator_id:
p1 = new PlusOperator<std::string>(p1, p2);
break;
case MinusOperator_id:
case impl::MinusOperator_id:
p1 = new MinusOperator<std::string>(p1, p2);
break;
case MultiplyOperator_id:
case impl::MultiplyOperator_id:
p1 = new MultiplyOperator<std::string>(p1, p2);
break;
case DivOperator_id:
case impl::DivOperator_id:
p1 = new DivideOperator<std::string>(p1, p2);
break;
case ModOperator_id:
case impl::ModOperator_id:
p1 = new ModOperator<std::string>(p1, p2);
break;
case EqualsOperator_id:
case impl::EqualsOperator_id:
p1 = new EqualsOperator(p1, p2);
break;
case NotEqualsOperator_id:
case impl::NotEqualsOperator_id:
p1 = new NotEqualsOperator(p1, p2);
break;
case LessThanOperator_id:
case impl::LessThanOperator_id:
p1 = new LessThanOperator(p1, p2);
break;
case LessThanEqualsOperator_id:
case impl::LessThanEqualsOperator_id:
p1 = new LessThanEqualsOperator(p1, p2);
break;
case GreaterThanOperator_id:
case impl::GreaterThanOperator_id:
p1 = new GreaterThanOperator(p1, p2);
break;
case GreaterThanEqualsOperator_id:
case impl::GreaterThanEqualsOperator_id:
p1 = new GreaterThanEqualsOperator(p1, p2);
break;
case OrOperator_id:
case impl::OrOperator_id:
p1 = new OrOperator(p1, p2);
break;
case AndOperator_id:
case impl::AndOperator_id:
p1 = new AndOperator(p1, p2);
break;
case UnionOperator_id:
case impl::UnionOperator_id:
p1 = new UnionExpression(p1, p2);
break;
default:
@ -178,16 +178,16 @@ RelativeLocationPath::StepList createStepList(node_iter_t const& from, node_iter
while(c != end)
switch(getNodeId(c))
{
case S_id:
case Slash_id:
case impl::S_id:
case impl::Slash_id:
++c; // just drop it
break;
case RelativeLocationPath_id:
case impl::RelativeLocationPath_id:
// might get here when handling an absolute path
end = c->children.end();
c = c->children.begin();
break;
case Step_id:
case impl::Step_id:
{
node_iter_t step = c->children.begin();
steps.push_back(StepFactory::createStep(step, c->children.end(), context));
@ -322,45 +322,45 @@ const std::map<int, XPath::compileFn> XPath::createFunctions()
{
std::map<int, XPath::compileFn> factory;
factory[AbsoluteLocationPath_id] = createAbsoluteLocationPath;
factory[RelativeLocationPath_id] = createRelativeLocationPath;
factory[AbbreviatedAbsoluteLocationPath_id] = createAbsoluteLocationPath;
factory[Step_id] = createRelativeLocationPath;
factory[PathExpr_id] = createRelativeLocationPath;
factory[FilterExpr_id] = createRelativeLocationPath;
factory[impl::AbsoluteLocationPath_id] = createAbsoluteLocationPath;
factory[impl::RelativeLocationPath_id] = createRelativeLocationPath;
factory[impl::AbbreviatedAbsoluteLocationPath_id] = createAbsoluteLocationPath;
factory[impl::Step_id] = createRelativeLocationPath;
factory[impl::PathExpr_id] = createRelativeLocationPath;
factory[impl::FilterExpr_id] = createRelativeLocationPath;
factory[PrimaryExpr_id] = createExpression;
factory[impl::PrimaryExpr_id] = createExpression;
factory[FunctionCall_id] = createFunction;
factory[impl::FunctionCall_id] = createFunction;
factory[AdditiveExpr_id] = createBinaryExpression;
factory[MultiplicativeExpr_id] = createBinaryExpression;
factory[EqualityExpr_id] = createBinaryExpression;
factory[RelationalExpr_id] = createBinaryExpression;
factory[OrExpr_id] = createBinaryExpression;
factory[AndExpr_id] = createBinaryExpression;
factory[UnionExpr_id] = createBinaryExpression;
factory[impl::AdditiveExpr_id] = createBinaryExpression;
factory[impl::MultiplicativeExpr_id] = createBinaryExpression;
factory[impl::EqualityExpr_id] = createBinaryExpression;
factory[impl::RelationalExpr_id] = createBinaryExpression;
factory[impl::OrExpr_id] = createBinaryExpression;
factory[impl::AndExpr_id] = createBinaryExpression;
factory[impl::UnionExpr_id] = createBinaryExpression;
factory[Literal_id] = createLiteral;
factory[Number_id] = createNumber;
factory[Digits_id] = createNumber;
factory[impl::Literal_id] = createLiteral;
factory[impl::Number_id] = createNumber;
factory[impl::Digits_id] = createNumber;
factory[VariableReference_id] = createVariable;
factory[impl::VariableReference_id] = createVariable;
factory[NodeTest_id] = createSingleStepRelativeLocationPath;
factory[QName_id] = createSingleStepRelativeLocationPath;
factory[NCName_id] = createSingleStepRelativeLocationPath;
factory[AnyName_id] = createSingleStepRelativeLocationPath;
factory[Text_id] = createSingleStepRelativeLocationPath;
factory[Comment_id] = createSingleStepRelativeLocationPath;
factory[ProcessingInstruction_id] = createSingleStepRelativeLocationPath;
factory[Slash_id] = createSingleStepAbsoluteLocationPath;
factory[impl::NodeTest_id] = createSingleStepRelativeLocationPath;
factory[impl::QName_id] = createSingleStepRelativeLocationPath;
factory[impl::NCName_id] = createSingleStepRelativeLocationPath;
factory[impl::AnyName_id] = createSingleStepRelativeLocationPath;
factory[impl::Text_id] = createSingleStepRelativeLocationPath;
factory[impl::Comment_id] = createSingleStepRelativeLocationPath;
factory[impl::ProcessingInstruction_id] = createSingleStepRelativeLocationPath;
factory[impl::Slash_id] = createSingleStepAbsoluteLocationPath;
factory[SelfSelect_id] = createSingleStepRelativeLocationPath;
factory[ParentSelect_id] = createSingleStepRelativeLocationPath;
factory[impl::SelfSelect_id] = createSingleStepRelativeLocationPath;
factory[impl::ParentSelect_id] = createSingleStepRelativeLocationPath;
factory[UnaryExpr_id] = createUnaryExpression;
factory[UnaryMinusOperator_id] = createUnaryNegativeExpr;
factory[impl::UnaryExpr_id] = createUnaryExpression;
factory[impl::UnaryMinusOperator_id] = createUnaryNegativeExpr;
return factory;
} // createFunctions
@ -369,95 +369,95 @@ const std::map<int, std::string> XPath::debugNames()
{
std::map<int, std::string> names;
names[LocationPath_id] = "LocationPath";
names[AbsoluteLocationPath_id] = "AbsoluteLocationPath";
names[RelativeLocationPath_id] = "RelativeLocationPath";
names[Step_id] = "Step";
names[AxisSpecifier_id] = "AxisSpecifier";
names[NodeTest_id] = "NodeTest";
names[Predicate_id] = "Predicate";
names[PredicateExpr_id] = "PredicateExpr";
names[AbbreviatedAbsoluteLocationPath_id] = "AbbreviatedAbsoluteLocationPath";
names[AbbreviatedStep_id] = "AbbreviatedStep";
names[AbbreviatedAxisSpecifier_id] = "AbbreviatedAxisSpecifier";
names[Expr_id] = "Expr";
names[PrimaryExpr_id] = "PrimaryExpr";
names[FunctionCall_id] = "FunctionCall";
names[Argument_id] = "Argument";
names[UnionExpr_id] = "UnionExpr";
names[PathExpr_id] = "PathExpr";
names[FilterExpr_id] = "FilterExpr";
names[OrExpr_id] = "OrExpr";
names[AndExpr_id] = "AndExpr";
names[EqualityExpr_id] = "EqualityExpr";
names[RelationalExpr_id] = "RelationalExpr";
names[AdditiveExpr_id] = "AdditiveExpr";
names[MultiplicativeExpr_id] = "MultiplicativeExpr";
names[UnaryExpr_id] = "UnaryExpr";
names[Literal_id] = "Literal";
names[Number_id] = "Number";
names[Digits_id] = "Digits";
names[MultiplyOperator_id] = "MultiplyOperator";
names[FunctionName_id] = "FunctionName";
names[VariableReference_id] = "VariableReference";
names[NameTest_id] = "NameTest";
names[S_id] = "S";
names[NodeType_id] = "NodeType";
names[AxisName_id] = "AxisName";
names[impl::LocationPath_id] = "LocationPath";
names[impl::AbsoluteLocationPath_id] = "AbsoluteLocationPath";
names[impl::RelativeLocationPath_id] = "RelativeLocationPath";
names[impl::Step_id] = "Step";
names[impl::AxisSpecifier_id] = "AxisSpecifier";
names[impl::NodeTest_id] = "NodeTest";
names[impl::Predicate_id] = "Predicate";
names[impl::PredicateExpr_id] = "PredicateExpr";
names[impl::AbbreviatedAbsoluteLocationPath_id] = "AbbreviatedAbsoluteLocationPath";
names[impl::AbbreviatedStep_id] = "AbbreviatedStep";
names[impl::AbbreviatedAxisSpecifier_id] = "AbbreviatedAxisSpecifier";
names[impl::Expr_id] = "Expr";
names[impl::PrimaryExpr_id] = "PrimaryExpr";
names[impl::FunctionCall_id] = "FunctionCall";
names[impl::Argument_id] = "Argument";
names[impl::UnionExpr_id] = "UnionExpr";
names[impl::PathExpr_id] = "PathExpr";
names[impl::FilterExpr_id] = "FilterExpr";
names[impl::OrExpr_id] = "OrExpr";
names[impl::AndExpr_id] = "AndExpr";
names[impl::EqualityExpr_id] = "EqualityExpr";
names[impl::RelationalExpr_id] = "RelationalExpr";
names[impl::AdditiveExpr_id] = "AdditiveExpr";
names[impl::MultiplicativeExpr_id] = "MultiplicativeExpr";
names[impl::UnaryExpr_id] = "UnaryExpr";
names[impl::Literal_id] = "Literal";
names[impl::Number_id] = "Number";
names[impl::Digits_id] = "Digits";
names[impl::MultiplyOperator_id] = "MultiplyOperator";
names[impl::FunctionName_id] = "FunctionName";
names[impl::VariableReference_id] = "VariableReference";
names[impl::NameTest_id] = "NameTest";
names[impl::S_id] = "S";
names[impl::NodeType_id] = "NodeType";
names[impl::AxisName_id] = "AxisName";
names[QName_id] = "QName";
names[Prefix_id] = "Prefix";
names[LocalPart_id] = "LocalPart";
names[NCName_id] = "NCName";
names[NCNameChar_id] = "NCNameChar";
names[impl::QName_id] = "QName";
names[impl::Prefix_id] = "Prefix";
names[impl::LocalPart_id] = "LocalPart";
names[impl::NCName_id] = "NCName";
names[impl::NCNameChar_id] = "NCNameChar";
names[Slash_id] = "/";
names[SlashSlash_id] = "//";
names[impl::Slash_id] = "/";
names[impl::SlashSlash_id] = "//";
names[AncestorOrSelf_id] = "ancestor-or-self::";
names[Ancestor_id] = "ancestor::";
names[Attribute_id] = "attribute::";
names[Child_id] = "child::";
names[DescendantOrSelf_id] = "descendant-or-self::";
names[Descendant_id] = "descendant::";
names[FollowingSibling_id] = "following-sibling::";
names[Following_id] = "following::";
names[Namespace_id] = "namespace::";
names[Parent_id] = "parent::";
names[PrecedingSibling_id] = "preceding-sibling::";
names[Preceding_id] = "preceding::";
names[Self_id] = "self::";
names[impl::AncestorOrSelf_id] = "ancestor-or-self::";
names[impl::Ancestor_id] = "ancestor::";
names[impl::Attribute_id] = "attribute::";
names[impl::Child_id] = "child::";
names[impl::DescendantOrSelf_id] = "descendant-or-self::";
names[impl::Descendant_id] = "descendant::";
names[impl::FollowingSibling_id] = "following-sibling::";
names[impl::Following_id] = "following::";
names[impl::Namespace_id] = "namespace::";
names[impl::Parent_id] = "parent::";
names[impl::PrecedingSibling_id] = "preceding-sibling::";
names[impl::Preceding_id] = "preceding::";
names[impl::Self_id] = "self::";
names[Comment_id] = "comment()";
names[Text_id] = "text()";
names[ProcessingInstruction_id] = "processing-instruction()";
names[Node_id] = "node()";
names[AnyName_id] = "AnyName";
names[impl::Comment_id] = "comment()";
names[impl::Text_id] = "text()";
names[impl::ProcessingInstruction_id] = "processing-instruction()";
names[impl::Node_id] = "node()";
names[impl::AnyName_id] = "AnyName";
names[SelfSelect_id] = "SelfSelect";
names[ParentSelect_id] = "ParentSelect";
names[impl::SelfSelect_id] = "SelfSelect";
names[impl::ParentSelect_id] = "ParentSelect";
names[LeftSquare_id] = "[";
names[RightSquare_id] = "]";
names[impl::LeftSquare_id] = "[";
names[impl::RightSquare_id] = "]";
names[LeftBracket_id] = "(";
names[RightBracket_id] = ")";
names[impl::LeftBracket_id] = "(";
names[impl::RightBracket_id] = ")";
names[PlusOperator_id] = "+";
names[MinusOperator_id] = "-";
names[ModOperator_id] = "mod";
names[DivOperator_id] = "div";
names[EqualsOperator_id] = "=";
names[NotEqualsOperator_id] = "!=";
names[LessThanOperator_id] = "<";
names[LessThanEqualsOperator_id] = "<=";
names[GreaterThanOperator_id] = ">";
names[GreaterThanEqualsOperator_id] = ">=";
names[impl::PlusOperator_id] = "+";
names[impl::MinusOperator_id] = "-";
names[impl::ModOperator_id] = "mod";
names[impl::DivOperator_id] = "div";
names[impl::EqualsOperator_id] = "=";
names[impl::NotEqualsOperator_id] = "!=";
names[impl::LessThanOperator_id] = "<";
names[impl::LessThanEqualsOperator_id] = "<=";
names[impl::GreaterThanOperator_id] = ">";
names[impl::GreaterThanEqualsOperator_id] = ">=";
names[OrOperator_id] = "or";
names[AndOperator_id] = "and";
names[UnionOperator_id] = "union";
names[UnaryMinusOperator_id] = "minus";
names[impl::OrOperator_id] = "or";
names[impl::AndOperator_id] = "and";
names[impl::UnionOperator_id] = "union";
names[impl::UnaryMinusOperator_id] = "minus";
return names;
} // debugNames