StringReader部分

This commit is contained in:
2020-12-18 18:12:47 +08:00
parent 9484b3c098
commit 9a0e925f6e
13 changed files with 338 additions and 28 deletions

View File

@ -17,13 +17,42 @@ namespace JerryYan\DSL\Reader;
*/
abstract class ReaderInterface
{
protected $currentLine = 0;
protected $currentLine = 1;
protected $currentPosition = 0;
protected $currentLinePosition = 0;
#abstract public function getNextChar(): ?string;
#abstract public function getCurrentToken(): ?string;
#abstract public function getNextToken(): ?string;
#abstract public function moveToNextToken(): ?string;
protected $nextPosition = 0;
/**
* 获取下一个字符
* @return string
* @author Jerry Yan <792602257@qq.com>
* @date 2020/12/18 12:06
*/
abstract public function getNextChar(): string;
/**
* 获取当前识别符
* @return string
* @author Jerry Yan <792602257@qq.com>
* @date 2020/12/18 12:06
*/
abstract public function getCurrentToken(): string;
/**
* 获取下一个识别符
* @return string
* @author Jerry Yan <792602257@qq.com>
* @date 2020/12/18 12:06
*/
abstract public function getNextToken(): string;
/**
* 移动至下一个识别符
* @return bool
* @author Jerry Yan <792602257@qq.com>
* @date 2020/12/18 12:06
*/
abstract public function moveToNextToken(): bool;
/**
* 跳过当前行
@ -31,7 +60,7 @@ abstract class ReaderInterface
* @author Jerry Yan <792602257@qq.com>
* @date 2020/12/17 15:43
*/
#abstract public function skipCurrentLine(): bool;
abstract public function skipCurrentLine(): bool;
/**
* 从当前位置跳到结束位置
@ -40,5 +69,28 @@ abstract class ReaderInterface
* @author Jerry Yan <792602257@qq.com>
* @date 2020/12/17 15:43
*/
#abstract public function skipUntil(string $end="*/"): bool;
abstract public function skipUntil(string $end="*/"): bool;
/**
* 重置读取器
* @author Jerry Yan <792602257@qq.com>
* @date 2020/12/18 12:01
*/
public function reset(): void
{
$this->currentLine = 1;
$this->currentPosition = 0;
$this->nextPosition = 0;
$this->moveToNextToken();
}
/**
* 重置读取器
* @author Jerry Yan <792602257@qq.com>
* @date 2020/12/18 12:01
*/
public function resetCursor(): void
{
$this->reset();
}
}