Lines Matching defs:tokens

74   $tokens = ebnf_scan($input, true);
75 $dom = ebnf_parse_syntax($tokens);
258 $i = 0; $n = strlen($input); $m = count($ebnf_lexemes); $tokens = array();
265 $tokens[] = array('type' => $ebnf_lexemes[$j]['type'],
270 } return $tokens;
278 function ebnf_parse_syntax(&$tokens) {
283 $i = 0; $token = $tokens[$i++];
287 $token = $tokens[$i++];
291 $token = $tokens[$i];
292 while ($i < count($tokens) && $token['type'] == EBNF_IDENTIFIER_TOKEN) {
293 $syntax->appendChild(ebnf_parse_production($dom, $tokens, $i));
294 if ($i<count($tokens)) $token = $tokens[$i];
296 throw new Exception("Syntax must end with '}': ".$tokens[count($tokens)-1]['pos']);
297 if ($i<count($tokens)) {
298 $token = $tokens[$i];
307 function ebnf_parse_production(&$dom, &$tokens, &$i) {
308 $token = $tokens[$i++];
313 $token = $tokens[$i++];
316 $production->appendChild( ebnf_parse_expression($dom, $tokens, $i));
317 $token = $tokens[$i++];
324 function ebnf_parse_expression(&$dom, &$tokens, &$i) {
326 $choise->appendChild(ebnf_parse_term($dom, $tokens, $i));
327 $token=$tokens[$i]; $mul = false;
330 $choise->appendChild(ebnf_parse_term($dom, $tokens, $i));
331 $token=$tokens[$i]; $mul = true;
335 function ebnf_parse_term(&$dom, &$tokens, &$i) {
337 $factor = ebnf_parse_factor($dom, $tokens, $i);
339 $token=$tokens[$i]; $mul = false;
342 $sequence->appendChild(ebnf_parse_factor($dom, $tokens, $i));
343 $token=$tokens[$i]; $mul = true;
347 function ebnf_parse_factor(&$dom, &$tokens, &$i) {
348 $token = $tokens[$i++];
358 $expression = ebnf_parse_expression($dom, $tokens, $i);
359 $token = $tokens[$i++];
365 $option->appendChild(ebnf_parse_expression($dom, $tokens, $i));
366 $token = $tokens[$i++];
372 $loop->appendChild(ebnf_parse_expression($dom, $tokens, $i));
373 $token = $tokens[$i++];