diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-08-16 17:22:57 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-08-16 17:22:57 +0000 |
commit | d4021fdd89733b52b85d88a057d35ae11b201f5f (patch) | |
tree | efcbdd5698d17c2030154742f1c7268a1e5b3ee2 /libjava/gnu/xml | |
parent | f0fbca59d41847314cc55764e250606813abe586 (diff) | |
download | ppe42-gcc-d4021fdd89733b52b85d88a057d35ae11b201f5f.tar.gz ppe42-gcc-d4021fdd89733b52b85d88a057d35ae11b201f5f.zip |
* gnu/xml/xpath/XPathParser.y: Removed.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103162 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/xml')
-rw-r--r-- | libjava/gnu/xml/xpath/XPathParser.y | 782 |
1 files changed, 0 insertions, 782 deletions
diff --git a/libjava/gnu/xml/xpath/XPathParser.y b/libjava/gnu/xml/xpath/XPathParser.y deleted file mode 100644 index f8a60363b7f..00000000000 --- a/libjava/gnu/xml/xpath/XPathParser.y +++ /dev/null @@ -1,782 +0,0 @@ -%{ -/* XPathParser.java -- An XPath 1.0 parser. - Copyright (C) 2004 Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - -package gnu.xml.xpath; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import javax.xml.namespace.NamespaceContext; -import javax.xml.namespace.QName; -import javax.xml.xpath.XPathFunctionResolver; -import javax.xml.xpath.XPathVariableResolver; -import org.w3c.dom.Node; - -/** - * An XPath 1.0 parser. - * - * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> - */ -public class XPathParser -{ - - NamespaceContext namespaceContext; - XPathVariableResolver variableResolver; - XPathFunctionResolver functionResolver; - - QName getQName(String name) - { - QName qName = QName.valueOf(name); - if (namespaceContext != null) - { - String prefix = qName.getPrefix(); - String uri = qName.getNamespaceURI(); - if (prefix != null && (uri == null || uri.length() == 0)) - { - uri = namespaceContext.getNamespaceURI(prefix); - String localName = qName.getLocalPart(); - qName = new QName(uri, localName, prefix); - } - } - return qName; - } - - Expr lookupFunction(String name, List args) - { - int arity = args.size(); - if ("position".equals(name) && arity == 0) - { - return new PositionFunction(); - } - else if ("last".equals(name) && arity == 0) - { - return new LastFunction(); - } - else if ("string".equals(name) && (arity == 1 || arity == 0)) - { - return new StringFunction(args); - } - else if ("number".equals(name) && (arity == 1 || arity == 0)) - { - return new NumberFunction(args); - } - else if ("boolean".equals(name) && arity == 1) - { - return new BooleanFunction(args); - } - else if ("count".equals(name) && arity == 1) - { - return new CountFunction(args); - } - else if ("not".equals(name) && arity == 1) - { - return new NotFunction(args); - } - else if ("id".equals(name) && arity == 1) - { - return new IdFunction(args); - } - else if ("concat".equals(name) && arity > 1) - { - return new ConcatFunction(args); - } - else if ("true".equals(name) && arity == 0) - { - return new TrueFunction(); - } - else if ("false".equals(name) && arity == 0) - { - return new FalseFunction(); - } - else if ("name".equals(name) && (arity == 1 || arity == 0)) - { - return new NameFunction(args); - } - else if ("local-name".equals(name) && (arity == 1 || arity == 0)) - { - return new LocalNameFunction(args); - } - else if ("namespace-uri".equals(name) && (arity == 1 || arity == 0)) - { - return new NamespaceUriFunction(args); - } - else if ("starts-with".equals(name) && arity == 2) - { - return new StartsWithFunction(args); - } - else if ("contains".equals(name) && arity == 2) - { - return new ContainsFunction(args); - } - else if ("string-length".equals(name) && (arity == 1 || arity == 0)) - { - return new StringLengthFunction(args); - } - else if ("translate".equals(name) && arity == 3) - { - return new TranslateFunction(args); - } - else if ("normalize-space".equals(name) && (arity == 1 || arity == 0)) - { - return new NormalizeSpaceFunction(args); - } - else if ("substring".equals(name) && (arity == 2 || arity == 3)) - { - return new SubstringFunction(args); - } - else if ("substring-before".equals(name) && arity == 2) - { - return new SubstringBeforeFunction(args); - } - else if ("substring-after".equals(name) && arity == 2) - { - return new SubstringAfterFunction(args); - } - else if ("lang".equals(name) && arity == 1) - { - return new LangFunction(args); - } - else if ("sum".equals(name) && arity == 1) - { - return new SumFunction(args); - } - else if ("floor".equals(name) && arity == 1) - { - return new FloorFunction(args); - } - else if ("ceiling".equals(name) && arity == 1) - { - return new CeilingFunction(args); - } - else if ("round".equals(name) && arity == 1) - { - return new RoundFunction(args); - } - else if (functionResolver != null) - { - QName qName = QName.valueOf(name); - Object function = functionResolver.resolveFunction(qName, arity); - if (function != null && - function instanceof Function && - function instanceof Expr) - { - Function f = (Function) function; - f.setArguments(args); - return (Expr) function; - } - } - return new FunctionCall(functionResolver, name, args); - } - -%} - -%token LITERAL -%token DIGITS -%token NAME - -%token LP // '(' -%token RP // ')' -%token LB // '[' -%token RB // ']' -%token COMMA // ',' -%token PIPE // '|' -%token SLASH // '/' -%token DOUBLE_SLASH // '//' -%token EQ // '=' -%token NE // '!=' -%token GT // '>' -%token LT // '<' -%token GTE // '>=' -%token LTE // '<=' -%token PLUS // '+' -%token MINUS // '-' -%token AT // '@' -%token STAR // '*' -%token DOLLAR // '$' -%token COLON // ':' -%token DOUBLE_COLON // '::' -%token DOT // '.' -%token DOUBLE_DOT // '..' - -%token ANCESTOR -%token ANCESTOR_OR_SELF -%token ATTRIBUTE -%token CHILD -%token DESCENDANT -%token DESCENDANT_OR_SELF -%token FOLLOWING -%token FOLLOWING_SIBLING -%token NAMESPACE -%token PARENT -%token PRECEDING -%token PRECEDING_SIBLING -%token SELF -%token DIV -%token MOD -%token OR -%token AND -%token COMMENT -%token PROCESSING_INSTRUCTION -%token TEXT -%token NODE - -%right UNARY - -%start expr - -%% - -expr: - or_expr - ; - -location_path: - relative_location_path - | absolute_location_path - ; - -absolute_location_path: - SLASH - { - $$ = new Root(); - } - | SLASH relative_location_path - { - Steps steps; - if ($2 instanceof Steps) - { - steps = (Steps) $2; - } - else - { - steps = new Steps(); - steps.path.addFirst($2); - } - steps.path.addFirst(new Root()); - $$ = steps; - //$$ = new Step(new Root(), (Path) $2); - } - | DOUBLE_SLASH relative_location_path - { - Test nt = new NodeTypeTest((short) 0); - Selector s = new Selector(Selector.DESCENDANT_OR_SELF, - Collections.singletonList (nt)); - Steps steps; - if ($2 instanceof Steps) - { - steps = (Steps) $2; - } - else - { - steps = new Steps(); - steps.path.addFirst($2); - } - steps.path.addFirst(s); - steps.path.addFirst(new Root()); - $$ = steps; - //Step step = new Step(s, (Path) $2); - //$$ = new Step(new Root(), step); - } - ; - -relative_location_path: - step - | relative_location_path SLASH step - { - Steps steps; - if ($1 instanceof Steps) - { - steps = (Steps) $1; - } - else - { - steps = new Steps(); - steps.path.addFirst($1); - } - steps.path.addLast($3); - $$ = steps; - //$$ = new Step((Expr) $1, (Path) $3); - } - | relative_location_path DOUBLE_SLASH step - { - Test nt = new NodeTypeTest((short) 0); - Selector s = new Selector(Selector.DESCENDANT_OR_SELF, - Collections.singletonList (nt)); - Steps steps; - if ($1 instanceof Steps) - { - steps = (Steps) $1; - } - else - { - steps = new Steps(); - steps.path.addFirst($1); - } - steps.path.addLast(s); - steps.path.addLast($3); - $$ = steps; - //Step step = new Step(s, (Path) $3); - //$$ = new Step((Expr) $1, step); - } - ; - -step: - step_node_test - { - $$ = new Selector (Selector.CHILD, (List) $1); - } - | AT step_node_test - { - $$ = new Selector (Selector.ATTRIBUTE, (List) $2); - } - | axis_name DOUBLE_COLON step_node_test - { - $$ = new Selector (((Integer) $1).intValue (), (List) $3); - } - | DOT - { - $$ = new Selector (Selector.SELF, Collections.EMPTY_LIST); - } - | DOUBLE_DOT - { - $$ = new Selector (Selector.PARENT, Collections.EMPTY_LIST); - } - ; - -step_node_test: - node_test - { - List list = new ArrayList(); - list.add($1); - $$ = list; - } - | step_node_test predicate - { - List list = (List)$1; - list.add($2); - $$ = list; - } - ; - -/*predicate_list: - predicate - { - List list = new ArrayList (); - list.add ($1); - $$ = list; - } - | predicate predicate_list - { - List list = (List) $3; - list.add (0, $1); - $$ = list; - } - ;*/ - -axis_name: - ANCESTOR - { - $$ = new Integer(Selector.ANCESTOR); - } - | ANCESTOR_OR_SELF - { - $$ = new Integer(Selector.ANCESTOR_OR_SELF); - } - | ATTRIBUTE - { - $$ = new Integer(Selector.ATTRIBUTE); - } - | CHILD - { - $$ = new Integer(Selector.CHILD); - } - | DESCENDANT - { - $$ = new Integer(Selector.DESCENDANT); - } - | DESCENDANT_OR_SELF - { - $$ = new Integer(Selector.DESCENDANT_OR_SELF); - } - | FOLLOWING - { - $$ = new Integer(Selector.FOLLOWING); - } - | FOLLOWING_SIBLING - { - $$ = new Integer(Selector.FOLLOWING_SIBLING); - } - | NAMESPACE - { - $$ = new Integer(Selector.NAMESPACE); - } - | PARENT - { - $$ = new Integer(Selector.PARENT); - } - | PRECEDING - { - $$ = new Integer(Selector.PRECEDING); - } - | PRECEDING_SIBLING - { - $$ = new Integer(Selector.PRECEDING_SIBLING); - } - | SELF - { - $$ = new Integer(Selector.SELF); - } - ; - -node_test: - name_test - /*| PROCESSING_INSTRUCTION LP LITERAL RP*/ - | PROCESSING_INSTRUCTION LITERAL RP - { - $$ = new NodeTypeTest(Node.PROCESSING_INSTRUCTION_NODE, (String) $2); - } - /*| node_type LP RP*/ - | node_type RP - { - $$ = new NodeTypeTest(((Short) $1).shortValue()); - } - ; - -predicate: - LB expr RB - { - $$ = new Predicate((Expr) $2); - } - ; - -primary_expr: - variable_reference - | LP expr RP - { - $$ = new ParenthesizedExpr((Expr) $2); - } - | LITERAL - { - $$ = new Constant($1); - } - | number - { - $$ = new Constant($1); - } - | function_call - ; - -function_call: - function_name LP RP - { - $$ = lookupFunction((String) $1, Collections.EMPTY_LIST); - } - | function_name LP argument_list RP - { - $$ = lookupFunction((String) $1, (List) $3); - } - ; - -argument_list: - expr - { - List list = new ArrayList(); - list.add($1); - $$ = list; - } - | expr COMMA argument_list - { - List list = (List) $3; - list.add(0, $1); - $$ = list; - } - ; - -union_expr: - path_expr - | union_expr PIPE path_expr - { - $$ = new UnionExpr((Expr) $1, (Expr) $3); - } - ; - -path_expr: - location_path - | filter_expr - | filter_expr SLASH relative_location_path - { - Steps steps; - if ($3 instanceof Steps) - { - steps = (Steps) $3; - } - else - { - steps = new Steps(); - steps.path.addFirst($3); - } - steps.path.addFirst($1); - $$ = steps; - //$$ = new Step ((Expr) $1, (Path) $3); - } - | filter_expr DOUBLE_SLASH relative_location_path - { - Test nt = new NodeTypeTest((short) 0); - Selector s = new Selector(Selector.DESCENDANT_OR_SELF, - Collections.singletonList(nt)); - Steps steps; - if ($3 instanceof Steps) - { - steps = (Steps) $3; - } - else - { - steps = new Steps(); - steps.path.addFirst($3); - } - steps.path.addFirst(s); - steps.path.addFirst($1); - $$ = steps; - //Step step = new Step (s, (Path) $3); - //$$ = new Step ((Expr) $1, step); - } - ; - -filter_expr: - primary_expr - | filter_expr predicate - { - Predicate filter = (Predicate) $2; - Selector s = new Selector(Selector.SELF, - Collections.singletonList(filter)); - Steps steps; - if ($1 instanceof Steps) - { - steps = (Steps) $1; - } - else - { - steps = new Steps(); - steps.path.addFirst($1); - } - steps.path.addLast(s); - $$ = steps; - //$$ = new Step ((Expr) $1, s); - } - ; - -or_expr: - and_expr - | or_expr OR and_expr - { - $$ = new OrExpr((Expr) $1, (Expr) $3); - } - ; - -and_expr: - equality_expr - | and_expr AND equality_expr - { - $$ = new AndExpr((Expr) $1, (Expr) $3); - } - ; - -equality_expr: - relational_expr - | equality_expr EQ relational_expr - { - $$ = new EqualityExpr((Expr) $1, (Expr) $3, false); - } - | equality_expr NE relational_expr - { - $$ = new EqualityExpr((Expr) $1, (Expr) $3, true); - } - ; - -relational_expr: - additive_expr - | relational_expr LT additive_expr - { - $$ = new RelationalExpr((Expr) $1, (Expr) $3, true, false); - } - | relational_expr GT additive_expr - { - $$ = new RelationalExpr((Expr) $1, (Expr) $3, false, false); - } - | relational_expr LTE additive_expr - { - $$ = new RelationalExpr((Expr) $1, (Expr) $3, true, true); - } - | relational_expr GTE additive_expr - { - $$ = new RelationalExpr((Expr) $1, (Expr) $3, false, true); - } - ; - -additive_expr: - multiplicative_expr - | additive_expr PLUS multiplicative_expr - { - $$ = new ArithmeticExpr((Expr) $1, (Expr) $3, ArithmeticExpr.ADD); - } - | additive_expr MINUS multiplicative_expr - { - $$ = new ArithmeticExpr((Expr) $1, (Expr) $3, ArithmeticExpr.SUBTRACT); - } - ; - -multiplicative_expr: - unary_expr - | multiplicative_expr STAR unary_expr - { - $$ = new ArithmeticExpr((Expr) $1, (Expr) $3, ArithmeticExpr.MULTIPLY); - } - | multiplicative_expr DIV unary_expr - { - $$ = new ArithmeticExpr((Expr) $1, (Expr) $3, ArithmeticExpr.DIVIDE); - } - | multiplicative_expr MOD unary_expr - { - $$ = new ArithmeticExpr((Expr) $1, (Expr) $3, ArithmeticExpr.MODULO); - } - ; - -unary_expr: - union_expr - | MINUS unary_expr %prec UNARY - { - $$ = new NegativeExpr((Expr) $2); - } - ; - -number: - DIGITS - { - $$ = new Double((String) $1 + ".0"); - } - | DIGITS DOT - { - $$ = new Double((String) $1 + ".0"); - } - | DIGITS DOT DIGITS - { - $$ = new Double((String) $1 + "." + (String) $3); - } - | DOT DIGITS - { - $$ = new Double("0." + (String) $2); - } - ; - -function_name: - qname -/* | node_type - { - switch (((Short) $1).shortValue ()) - { - case Node.COMMENT_NODE: - $$ = "comment"; - break; - case Node.TEXT_NODE: - $$ = "text"; - break; - case Node.PROCESSING_INSTRUCTION_NODE: - $$ = "processing-instruction"; - break; - default: - $$ = "node"; - break; - } - }*/ - ; - -variable_reference: - DOLLAR qname - { - $$ = new VariableReference(variableResolver, (String) $2); - } - ; - -name_test: - STAR - { - $$ = new NameTest(null, true, true); - } - | NAME COLON STAR - { - QName qName = getQName((String) $1); - $$ = new NameTest(qName, true, false); - } - | qname - { - QName qName = getQName((String) $1); - $$ = new NameTest(qName, false, false); - } - ; - -qname: - NAME - | NAME COLON NAME - { - $$ = (String) $1 + ':' + (String) $3; - } - ; - -node_type: - COMMENT - { - $$ = new Short(Node.COMMENT_NODE); - } - | TEXT - { - $$ = new Short(Node.TEXT_NODE); - } - | PROCESSING_INSTRUCTION - { - $$ = new Short(Node.PROCESSING_INSTRUCTION_NODE); - } - | NODE - { - $$ = new Short((short) 0); - } - ; - -%% - -} |