Esempio n. 1
0
 public function testModeMapping()
 {
     $handler = new MockTestParser();
     $handler->returnsByValue('a', true);
     $handler->expectAt(0, 'a', array('aa', LEXER_MATCHED));
     $handler->expectAt(1, 'a', array('(', LEXER_ENTER));
     $handler->expectAt(2, 'a', array('bb', LEXER_MATCHED));
     $handler->expectAt(3, 'a', array('a', LEXER_UNMATCHED));
     $handler->expectAt(4, 'a', array('bb', LEXER_MATCHED));
     $handler->expectAt(5, 'a', array(')', LEXER_EXIT));
     $handler->expectAt(6, 'a', array('b', LEXER_UNMATCHED));
     $handler->expectCallCount('a', 7);
     $lexer = new SimpleLexer($handler, 'mode_a');
     $lexer->addPattern('a+', 'mode_a');
     $lexer->addEntryPattern('(', 'mode_a', 'mode_b');
     $lexer->addPattern('b+', 'mode_b');
     $lexer->addExitPattern(')', 'mode_b');
     $lexer->mapHandler('mode_a', 'a');
     $lexer->mapHandler('mode_b', 'a');
     $this->assertTrue($lexer->parse('aa(bbabb)b'));
 }