Overview

Namespaces

  • BN
    • Collections
    • Compiler
      • Grammar
      • Parser
        • Operator
        • Token
      • Postfix
        • Operands
        • Operator
        • Token
      • Scanner
        • Converter
      • Token
  • Demo
  • None

Classes

  • LexemeToToken
  • LexemeToTokens
  • Scanner
  • Statement
  • UnarySignsScanner

Interfaces

  • LexemeConverter
  • Overview
  • Namespace
  • Class
  • Tree
 1: <?php
 2: 
 3: namespace BN\Compiler\Scanner;
 4: 
 5: class LexemeToToken
 6: {
 7:     private $lexers = array();
 8:     private $unknown;
 9: 
10:     public function __construct(LexemeConverter $unknownLexeme)
11:     {
12:         $this->unknown = $unknownLexeme;
13:     }
14: 
15:     public function registerLexer(LexemeConverter $lexer)
16:     {
17:         $this->lexers[] = $lexer;
18:     }
19: 
20:     public function lexemeToToken($originalLexeme)
21:     {
22:         $lexeme = $originalLexeme;
23:         while ($lexeme !== '') {
24:             foreach ($this->lexers as $lexer) {
25:                 if ($lexer->canConvertLexeme($lexeme)) {
26:                     return $lexer->convertLexeme($lexeme);
27:                 }
28:             }
29:             $lexeme = mb_substr($lexeme, 0, -1, 'UTF-8');
30:         }
31:         return $this->unknown->convertLexeme($originalLexeme);
32:     }
33: }
34: 
BN-PHP - Big Number data type for PHP API documentation generated by ApiGen 2.8.0