1: <?php
2:
3: namespace BN\Compiler\Scanner;
4:
5: class UnarySignsScanner
6: {
7: private $scanner;
8: private $unarySigns;
9:
10: public function __construct(Scanner $scanner, array $unarySigns)
11: {
12: $this->scanner = $scanner;
13: $this->unarySigns = $unarySigns;
14: }
15:
16: public function tokenize($text)
17: {
18: $fixed = $this->addSpaceAroundSigns($text);
19: return $this->scanner->tokenize($fixed);
20: }
21:
22: private function addSpaceAroundSigns($text)
23: {
24: $replaced = $text;
25: foreach ($this->unarySigns as $sign) {
26: $replaced = preg_replace("~(?<=[0-9])\\{$sign}(?=[0-9])~", " {$sign} ", $replaced);
27: }
28: return $replaced;
29: }
30: }
31: