/** * @param array $args * * @return Input|false */ public function parse($args = null) { $fsm = new BacktrackingRunner($this->usageDefinition->getInitialState(), new UsageParserContext()); $symbols = $this->getInputSequence($args); if (!$symbols) { return false; } $result = $fsm->input($symbols); return $result === false ? false : new Input($result, $this->optionRepository); }
/** * @test */ public function it_must_end_on_a_terminal_state_to_return_result() { $this->assertEquals(['S3', 'S5'], $this->fsm->input(['t1', 't2'])); $this->assertEquals(false, $this->fsm->input(['t1'])); }