Hoa central
Praspel.php
Go to the documentation of this file.
1 <?php
2 
37 namespace Hoa\Praspel {
38 
39 use Hoa\Compiler;
40 use Hoa\Core;
41 use Hoa\File;
42 
51 class Praspel
52 {
58  protected static $_registry = null;
59 
60 
61 
69  public static function interpret($praspel, $bindToClass = null)
70  {
71  static $_compiler = null;
72  static $_interpreter = null;
73 
74  if (null === $_compiler) {
75  $_compiler = Compiler\Llk::load(
76  new File\Read('hoa://Library/Praspel/Grammar.pp')
77  );
78  }
79 
80  if (null === $_interpreter) {
81  $_interpreter = new Visitor\Interpreter();
82  }
83 
84  $ast = $_compiler->parse($praspel);
85 
86  if (null !== $bindToClass) {
87  $_interpreter->bindToClass($bindToClass);
88  }
89 
90  return $_interpreter->visit($ast);
91  }
92 
99  public static function extractFromComment($comment)
100  {
101  $i = preg_match('#/\*(.*?)\*/#s', $comment, $matches);
102 
103  if (0 === $i) {
104  return '';
105  }
106 
107  $i = preg_match_all('#^[\s\*]*\s*\*\s?([^\n]*)$#m', $matches[1], $maatches);
108 
109  if (0 === $i) {
110  return '';
111  }
112 
113  return trim(implode("\n", $maatches[1]));
114  }
115 
121  public static function getRegistry()
122  {
123  if (null === static::$_registry) {
124  static::$_registry = new \ArrayObject();
125  }
126 
127  return static::$_registry;
128  }
129 }
130 
134 Core\Consistency::flexEntity('Hoa\Praspel\Praspel');
135 
136 }
137 
138 namespace {
139 
146 if (!function_exists('praspel')) {
147  function praspel($praspel)
148  {
149  return Hoa\Praspel::interpret($praspel);
150  }
151 }
152 
153 }
static extractFromComment($comment)
Definition: Praspel.php:99
static getRegistry()
Definition: Praspel.php:121
static interpret($praspel, $bindToClass=null)
Definition: Praspel.php:69