<?php include_once dirname(__FILE__) . '/t/t.php'; $lime = new lime_test(); $list = PEG::listof(PEG::digit(), ','); $context = PEG::context('1,2,3,4'); $lime->is($list->parse($context), array('1', '2', '3', '4'));
<?php include_once dirname(__FILE__) . '/../code/PEG.php'; /* * 単語にヒットするパーサ。 * * EBNF: * word := (PEG::alphabet | "_") (PEG::alphabet | PEG::digit | "_")+ */ $word = PEG::join(PEG::seq(PEG::choice(PEG::alphabet(), PEG::token('_')), PEG::many(PEG::choice(PEG::alphabet(), PEG::digit(), PEG::token('_'))))); var_dump($word->parse(PEG::context('a'))); //=> 'a' var_dump($word->parse(PEG::context('hogehoge'))); //=> 'hogehoge' var_dump($word->parse(PEG::context('some_id'))); //=> 'some_id' var_dump($word->parse(PEG::context(' '))); //=> パースに失敗する var_dump($word->parse(PEG::context('hoge fuga'))); //=> パースはコンテキストの途中で止まり 'hoge'が返る