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

jaskell.parsec.State Maven / Gradle / Ivy

package jaskell.parsec;

import java.io.EOFException;

/**
 * Created by Mars Liu on 2016-01-02.
 * State 是 state 接口规范, parsec 用户可以定义自己的 state 实现.
 */
public interface State {
    /**
     * @return 总是返回 state 的当前元素,并迭代到下一个位置。如果到达结尾,会抛出 eof。
     * @throws java.io.EOFException 到达终结状态时,再调用 next 会抛出 EOF 异常。
     */
    E next() throws EOFException;

    /**
     * @return 返回当前 state 的状态,对于线性序列,通常即是索引。调用 next 时,会返回这个状态对应的元素。
     */
    Status status();

    /**
     * @return 返回一个事务标示,state 应记录和管理这个事务。
     */
    Tran begin();

    /**
     * 在很多场合,调用者使用自动生成的事务标示已经足够,但是 jparsec 也提供了显式指定事务标示的接口。
     * 在通常的线性序列状态中,通常不需要这样的模式,但是对于具名事务环境,例如一些数据库,可能这种方式
     * 是最佳的实践。State 应尽可能的使用给定的标示构造事务,并返回最终得到的事务标示,这表示我们允许
     * State 给出与期待不同的事务标示。
     * @param tran 接受一个事务标示参数,state 应尽可能使用这个标示生成事务。
     * @return 返回一个事务标示,state 应记录和管理这个事务。
     */
    Tran begin(Tran tran);

    /**
     * @param tran 提交指定的事务号。
     */
    void commit(Tran tran);

    /**
     * @param tran 回滚指定事务号对应的事务。
     */
    void rollback(Tran tran);

    /**
     * @param message 接受指定的消息文本,用于构造异常
     * @return 总是返回一个 ParsecException 或它的子类。具体的 State 实现者可以提供继承自 ParsecException 的异常。
     */
    ParsecException trap(String message);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy