All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pingbu.nlp.Subtree Maven / Gradle / Ivy

There is a newer version: 1.1.1
Show newest version
package pingbu.nlp;

import java.util.Collection;

/**
 * 语法子树基类
 * 
 * @author pingbu
 */
abstract class Subtree {

    /**
     * 语法树遍历游标
     */
    public static abstract class Cursor {

        /**
         * 语法树遍历事件处理接口
         */
        public interface Navigator {
            public boolean extendLexicon();

            public boolean pushUnit(Unit unit);

            public void popUnit();

            public void pushParams(Collection params);

            public void popParams(Collection params);

            /**
             * 遍历槽单元开始。
             * 
             * @return 当前位置。
             */
            public Object beginSlot();

            /**
             * 遍历槽单元结束。
             * 
             * @param name
             *            槽名称。
             * @param beginPos
             *            槽的起始位置,由beginSlot返回。
             */
            public void pushSlot(String name, Object beginPos);

            public void popSlot();

            public void endOnePath();
        }

        protected final Cursor mReturnCursor;

        public Cursor(Cursor returnCursor) {
            mReturnCursor = returnCursor;
        }

        protected final void navigateReturn(Navigator navigator) {
            if (mReturnCursor != null)
                mReturnCursor.navigate(navigator);
            else
                navigator.endOnePath();
        }

        public abstract void navigate(Navigator navigator);
    }

    public abstract Cursor newCursor(Cursor returnCursor);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy