com.skillw.asahi.api.member.lexer.AsahiLexer.kt Maven / Gradle / Ivy
package com.skillw.asahi.api.member.lexer
import com.skillw.asahi.api.member.namespace.NamespaceHolder
import com.skillw.asahi.api.member.quest.LazyQuester
import com.skillw.asahi.api.member.quest.Quester
import com.skillw.asahi.api.quest
import com.skillw.asahi.api.questSafely
import com.skillw.asahi.api.questType
import com.skillw.asahi.api.quester
import com.skillw.asahi.api.script.AsahiCompiledScript
import com.skillw.asahi.internal.lexer.AsahiLexerImpl
import com.skillw.asahi.internal.util.Time
/**
* AsahiLexer
*
* @constructor Create empty I asahi lexer
*/
interface AsahiLexer : NamespaceHolder {
/**
* 预期下一个token
*
* 若 下一个token 预期正确 则 跳过下一个token 并返回true
*
* 否则 不跳过下一个token 并返回false
*
* @param expects
* @return 下一个token是否符合预期
*/
fun expect(vararg expects: String): Boolean
/** @return 是否有下一个Token */
fun hasNext(): Boolean
/** @return 是否读取结束 */
fun isEnd(): Boolean = !hasNext()
/**
* 当前Token
*
* @return 当前Token
*/
fun current(): String
/**
* 下一个Token
*
* @return 下一个Token
*/
fun next(): String
/**
* 上一个Token 无上一个Token时为null
*
* @return 上一个Token
*/
fun previous(): String?
/**
* 当前Token下标
*
* @return 当前Token下标
*/
fun currentIndex(): Int
/**
* 查看下一个Token(忽略空字符)
*
* @return 下一个Token(忽略空字符)
*/
fun peekNextIgnoreBlank(): String?
/**
* 查看下一个Token(不忽略空字符)
*
* @return 下一个Token(不忽略空字符)
*/
fun peek(): String?
/**
* 跳过一些Token
*
* @param from 开头Token
* @param till 结尾Token
* @return 是否跳过成功
*/
fun skipTill(from: String, till: String): Boolean
/**
* 将一些Token 分割出来
*
* @param from 开头Token
* @param to 结尾Token
* @return 中间的Tokens
*/
fun splitTill(from: String, to: String): List
/**
* 将一些Token 分割出来
*
* @param to 结尾Token
* @return to前的Tokens
*/
fun splitBefore(vararg to: String): List
/**
* 将一些Token 分割出来 并以' '做分隔符结合为字符串
*
* @param to 结尾Token
* @return to前的Tokens以' '做分隔符结合为的字符串
*/
fun splitBeforeString(vararg to: String): String
/** 重置Reader,下标归0 */
fun reset()
/**
* 当前信息(包括脚本,下标)
*
* @return 当前信息(包括脚本,下标)
*/
fun info(message: String = "", index: Int = currentIndex()): String
/**
* 寻求字符串
*
* @return Quester
*/
fun questString() = quest()
/** 寻求 int */
fun questInt() = quest()
/** 寻求 double */
fun questDouble() = quest()
/** 寻求 float */
fun questFloat() = quest()
/** 寻求 byte */
fun questByte() = quest()
/** 寻求 short */
fun questShort() = quest()
/** 寻求 boolean */
fun questBoolean() = quest()
/** 寻求 long */
fun questLong() = quest()
/** 寻求 list */
fun questList() = quest>()
/** 寻求 array */
fun questArray() = quest>()
/** 寻求 map */
fun questMap() = quest>()
/** 寻求 tokenizer */
fun questObj() = questSafely()
/** 寻求 tokenizer */
fun questAny() = quest()
/** 寻求 代码块 */
fun questLazy() = quest>()
/** 寻求 Time */
fun questTime() = quest
© 2015 - 2025 Weber Informatics LLC | Privacy Policy