1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
#!/usr/bin/env php
<?php
require_once dirname(__FILE__).'/../__init_script__.php';
$args = new PhutilArgumentParser($argv);
$args->setTagline(pht('test context-free grammars'));
$args->setSynopsis(<<<EOHELP
**lipsum.php** __class__
Generate output from a named context-free grammar.
EOHELP
);
$args->parseStandardArguments();
$args->parse(
array(
array(
'name' => 'class',
'wildcard' => true,
),
));
$class = $args->getArg('class');
if (count($class) !== 1) {
$args->printHelpAndExit();
}
$class = reset($class);
$symbols = id(new PhutilClassMapQuery())
->setAncestorClass('PhutilContextFreeGrammar')
->execute();
$symbols = ipull($symbols, 'name', 'name');
if (empty($symbols[$class])) {
$available = implode(', ', array_keys($symbols));
throw new PhutilArgumentUsageException(
pht(
"Class '%s' is not a defined, concrete subclass of %s. ".
"Available classes are: %s",
$class,
'PhutilContextFreeGrammar',
$available));
}
$object = newv($class, array());
echo $object->generate()."\n";
|