summaryrefslogtreecommitdiffstats
path: root/libjava/gnu/javax/swing/text/html/parser/models/node.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/gnu/javax/swing/text/html/parser/models/node.java')
-rwxr-xr-xlibjava/gnu/javax/swing/text/html/parser/models/node.java337
1 files changed, 0 insertions, 337 deletions
diff --git a/libjava/gnu/javax/swing/text/html/parser/models/node.java b/libjava/gnu/javax/swing/text/html/parser/models/node.java
deleted file mode 100755
index c615ddff350..00000000000
--- a/libjava/gnu/javax/swing/text/html/parser/models/node.java
+++ /dev/null
@@ -1,337 +0,0 @@
-/* node.java --
- Copyright (C) 2005 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.javax.swing.text.html.parser.models;
-
-import java.io.Serializable;
-
-/**
- * Part of the internal representation of the content model.
- * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
- */
-public class node
- implements Serializable
-{
- private static final long serialVersionUID = 1;
-
- /**
- * The token to match (can be instance of list).
- */
- public Object token;
-
- /**
- * True for the node that cannot be visited again.
- */
- public boolean _closed;
-
- /**
- * The binary operation for this node.
- */
- public char binary;
-
- /**
- * The unary opeation for this node.
- */
- public char unary;
-
- /**
- * The number of times the node already was visited.
- */
- public int visits;
-
- /**
- * The previous node in content model (used for closing nodes).
- */
- public node previous;
-
- /**
- * Creates a new node.
- * @param binary_operator The operator, connecting all nodes in the list.
- * The nodes, connected by the different operators, must be arranged into
- * the different lists.
- * @param unary_operator The unary operator for this node or zero if
- * no such was specified.
- * @param token The token to match. This can be either a string or
- * the new instance of the list.
- * @param a_previous The previous node in the list, null for the first
- * node. This is used for propagating the closing operation for the
- * comma delimited list.
- */
- public node(char binary_operator, char unary_operator, Object a_token)
- {
- if (a_token != null)
- if (a_token.getClass().equals(node.class))
- throw new Error("Creating node in node is redundant and ineffective.");
-
- binary = binary_operator;
- unary = unary_operator;
- token = a_token;
- }
-
- /**
- * Checks if this node is in the closed state.
- * @return True if the node is closed.
- */
- public boolean isClosed()
- {
- return _closed;
- }
-
- /**
- * Check if closing this node means closing the previous node.
- */
- public boolean closePrevious()
- {
- return binary == ',';
- }
-
- /**
- * Return the token object if it could match as a next token in
- * a token list of null if it could not.
- * @return
- */
- public Object findFreeNode()
- {
- boolean ok;
- if (isClosed() || silenceAllowed())
- return null;
-
- // Try if the node would stay valid after a one more visit.
- visits++;
- ok = valid();
- visits--;
-
- if (ok)
- {
- if (token instanceof node)
- return ((node) token).findFreeNode();
- else
- return token;
- }
- else
- return null;
- }
-
- /**
- * Check if the current situation is such that the node must be closed
- * now.
- */
- public boolean mustClose()
- {
- switch (unary)
- {
- case 0 :
- return true;
-
- case '*' :
- return false;
-
- case '+' :
- return false;
-
- case '?' :
- return visits <= 1;
-
- default :
- throw new Error("Invalid unary operation " + unary + " ( '" +
- (char) unary + "' )"
- );
- }
- }
-
- /**
- * Do the match operation with the given token. This sets various
- * flags.
- * @param token The token to match.
- * @return true if the the token matches node, false if it does not match
- * or if the node is closed.
- */
- public boolean performMatch(Object a_token)
- {
- if (isClosed())
- return false;
-
- boolean matches = compare(a_token);
- if (matches)
- matches();
-
- return matches;
- }
-
- /**
- * Prepares the node for matching against a new list of tokens.
- */
- public void reset()
- {
- _closed = false;
- visits = 0;
- }
-
- /**
- * Check if the provided token can match this node.
- * In the case of match, the node state changes, moving
- * current position after the matched token. However if this method
- * returns a suggested new token to insert before the provided one,
- * the state of the list does not change.
- * @return Boolean.TRUE if the match is found,
- * Boolean.FALSE if the match is not possible and no token can be
- * inserted to make the match valid. Otherwise, returns the
- * token object that can be inserted before the last token in the
- * list, probably (not for sure) making the match valid.
- */
- public Object show(Object x)
- {
- if (compare(x))
- return performMatch(x) ? Boolean.TRUE : Boolean.FALSE;
-
- Object recommended = findFreeNode();
- return recommended != null ? recommended : Boolean.FALSE;
- }
-
- /**
- * Check if it would be a valid case if this node is visited zero times.
- * Nodes with unary operator * or ? need not be matched to make a
- * model valid.
- */
- public boolean silenceAllowed()
- {
- return unary == '?' || unary == '*';
- }
-
- /**
- * Returns a string representation of the list.
- * @return String representation, similar to BNF expression.
- */
- public String toString()
- {
- StringBuffer b = new StringBuffer();
-
- b.append(token);
- if (unary != 0)
- b.append((char) unary);
- else
- b.append('\'');
-
- return b.toString();
- }
-
- /**
- * Check if the node state is valid.
- */
- public boolean valid()
- {
- switch (unary)
- {
- case 0 :
- if (binary == '|')
- return true;
- else
- return visits == 1;
-
- case '*' :
- return true;
-
- case '+' :
- return visits > 0;
-
- case '?' :
- return visits <= 1;
-
- default :
- throw new Error("Invalid unary operation " + unary + " ( '" +
- (char) unary + "' )"
- );
- }
- }
-
- public boolean validPreliminary()
- {
- return visits == 0 || valid();
- }
-
- /**
- * Closes this node and, if closePrevious() returs true, calls close() for
- * the previous node.
- */
- protected void close()
- {
- _closed = true;
- if (previous != null && closePrevious())
- previous.close();
- }
-
- /**
- * Compare the provided token object with the token object of this node.
- */
- protected boolean compare(Object a_token)
- {
- if (token instanceof Object[])
- throw new Error("Invalid token object, probably the 'list' " +
- "should be used. "
- );
-
- if (token instanceof node[])
- throw new Error("Do not use 'node' for the array of nodes, use 'list'. ");
-
- if (token instanceof node)
- {
- return ((node) token).performMatch(a_token);
- }
-
- boolean rt = false;
-
- if (token == a_token)
- rt = true;
- if (token.equals(a_token))
- rt = true;
- if (token.toString().equalsIgnoreCase(a_token.toString()))
- rt = true;
-
- return rt;
- }
-
- /**
- * Fire the changes that must happen then the token matches this node.
- */
- protected void matches()
- {
- visits++;
- if (mustClose())
- close();
- }
-}
OpenPOWER on IntegriCloud