001package org.maltparser.core.syntaxgraph;
002
003import java.util.SortedSet;
004
005import org.maltparser.core.exception.MaltChainedException;
006import org.maltparser.core.syntaxgraph.node.TokenNode;
007
008/**
009*
010*
011* @author Johan Hall
012*/
013public interface TokenStructure extends LabeledStructure { 
014        /**
015         * Adds a token node with index <i>n + 1</i>, where <i>n</i> is the index of the last token node. 
016         * 
017         * @return the added token node.
018         * @throws MaltChainedException
019         */
020        public TokenNode addTokenNode() throws MaltChainedException;
021        /**
022         * Adds a token node with index <i>index</i>.
023         * 
024         * @param index the index of the token node.
025         * @return the added token node.
026         */
027        public TokenNode addTokenNode(int index) throws MaltChainedException;
028        /**
029         * Returns the token node with index <i>index</i>.
030         * 
031         * @param index the index of the token node.
032         * @return a token node with index <i>index</i>.
033         * @throws MaltChainedException
034         */
035        public TokenNode getTokenNode(int index);
036        /**
037         * Returns the number of token nodes in the token structure (sentence).
038         * 
039         * @return the number of token nodes in the token structure (sentence).
040         */
041        public int nTokenNode();
042        /**
043         * Returns a sorted set of integers {s,...,n}, where each index i identifies a token node. Index <i>s</i> 
044         * is the first token node and index <i>n</i> is the last token node. 
045         * 
046         * @return a sorted set of integers {s,...,n}.
047         */
048        public SortedSet<Integer> getTokenIndices();
049        /**
050         * Returns the index of the last token node.
051         * 
052         * @return the index of the last token node.
053         */
054        public int getHighestTokenIndex();
055        /**
056         *  Returns <i>true</i> if the token structure (sentence) has any token nodes, otherwise <i>false</i>.
057         * 
058         * @return <i>true</i> if the token structure (sentence) has any token nodes, otherwise <i>false</i>.
059         */
060        public boolean hasTokens();
061        /**
062         * Returns the sentence ID
063         * 
064         * @return the sentence ID
065         */
066        public int getSentenceID();
067        /**
068         * Sets the sentence ID
069         * 
070         * @param sentenceID a sentence ID
071         */
072        public void setSentenceID(int sentenceID);
073}