Пример #1
0
 protected function createImageLink()
 {
     $ext = PEG::choice('.jpg', '.png', '.gif');
     $src_char = PEG::pack('[', PEG::seq(PEG::many1(PEG::subtract($this->lineChar, ']', $ext)), $ext), ']');
     $src = PEG::join($src_char);
     $alt_char = PEG::pack('[', PEG::many1(PEG::subtract($this->lineChar, ']')), ']');
     $alt = PEG::join($alt_char);
     $parser = PEG::seq($src, PEG::optional($alt));
     return $this->nodeCreater(OrgModeSyntax_Node::TYPE_IMAGELINK, $parser, array('src', 'alt'));
 }
Пример #2
0
<?php

/**
 * 行頭に#があったら無視するパーサのサンプル
 */
include_once dirname(__FILE__) . '/../code/PEG.php';
$line = PEG::line();
$ignore = PEG::drop(PEG::andalso('#', $line));
$parser = PEG::join(PEG::many(PEG::choice($ignore, $line)));
$context = PEG::context('
Lorem ipsum dolor sit amet, 
#consectetur adipisicing elit, 
#sed do eiusmod tempor incididunt ut 
labore et dolore magna aliqua.
');
var_dump($parser->parse($context));
/* 結果
string(64) "
Lorem ipsum dolor sit amet, 
labore et dolore magna aliqua.
"
 */
Пример #3
0
 protected function createNullLink()
 {
     $body = PEG::join(PEG::many1(PEG::subtract($this->lineChar, '[]')));
     $parser = PEG::pack(']', $body, '[');
     return $parser;
 }
Пример #4
0
<?php

include_once dirname(__FILE__) . '/t/t.php';
$lime = new lime_test();
$join = PEG::join(PEG::seq('b', PEG::many('a')));
$context = PEG::context('baaa');
$lime->is($join->parse($context), 'baaa');
Пример #5
0
<?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'が返る