原始输出类及测试
This commit is contained in:
parent
273f6ba2e8
commit
e738695057
@ -1,21 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @filename CnTextOutput.php
|
||||
* @author Jerry Yan <792602257@qq.com>
|
||||
* @date 2020/12/17 15:33
|
||||
*/
|
||||
|
||||
|
||||
namespace JerryYan\DSL\Output;
|
||||
|
||||
|
||||
/**
|
||||
* 又以中文形式重新输出一遍
|
||||
* @package JerryYan\DSL\Output
|
||||
* @author Jerry Yan <792602257@qq.com>
|
||||
* @date 2020/12/17 16:12
|
||||
*/
|
||||
class CnTextOutput extends OutputInterface
|
||||
{
|
||||
|
||||
}
|
@ -9,7 +9,15 @@
|
||||
namespace JerryYan\DSL\Output;
|
||||
|
||||
|
||||
use JerryYan\DSL\Token\TokenInterface;
|
||||
|
||||
abstract class OutputInterface
|
||||
{
|
||||
protected $tokenChain;
|
||||
public function __construct(TokenInterface $tokenChain)
|
||||
{
|
||||
$this->tokenChain = $tokenChain->getFirstToken();
|
||||
}
|
||||
|
||||
abstract public function output();
|
||||
}
|
29
src/Output/RawOutput.php
Normal file
29
src/Output/RawOutput.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* @filename CnTextOutput.php
|
||||
* @author Jerry Yan <792602257@qq.com>
|
||||
* @date 2020/12/17 15:33
|
||||
*/
|
||||
|
||||
|
||||
namespace JerryYan\DSL\Output;
|
||||
|
||||
|
||||
/**
|
||||
* 又以中文形式重新输出一遍
|
||||
* @package JerryYan\DSL\Output
|
||||
* @author Jerry Yan <792602257@qq.com>
|
||||
* @date 2020/12/17 16:12
|
||||
*/
|
||||
class RawOutput extends OutputInterface
|
||||
{
|
||||
public function output(): string
|
||||
{
|
||||
$output = [];
|
||||
$token = $this->tokenChain;
|
||||
do {
|
||||
array_push($output, $token->getRawString());
|
||||
} while ($token = $token->getNextToken());
|
||||
return implode(' ', $output);
|
||||
}
|
||||
}
|
33
tests/Output/RawOutputTest.php
Normal file
33
tests/Output/RawOutputTest.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
/**
|
||||
* @filename RawOutputTest.php
|
||||
* @author Jerry Yan <792602257@qq.com>
|
||||
* @date 2021/2/19 11:10
|
||||
*/
|
||||
|
||||
namespace JerryYan\DSL\Test\Output;
|
||||
|
||||
use JerryYan\DSL\Grammar\DefaultGrammar;
|
||||
use JerryYan\DSL\Output\RawOutput;
|
||||
use JerryYan\DSL\Reader\StringReader;
|
||||
use JerryYan\DSL\Tokenizer\Tokenizer;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class RawOutputTest extends TestCase
|
||||
{
|
||||
private $text = "当 另外那个 与 另外一个 不相等时 或者 那个 和 这个 等于 -0.5 的时候";
|
||||
private $output;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
$tokenizer = new Tokenizer(new DefaultGrammar());
|
||||
$reader = new StringReader($this->text);
|
||||
$token = $tokenizer->tokenize($reader);
|
||||
$this->output = new RawOutput($token);
|
||||
}
|
||||
|
||||
public function testOutput()
|
||||
{
|
||||
$this->assertEquals($this->text, $this->output->output(), '输出与预期不一致');
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user