Overview

Namespaces

  • BN
    • Collections
    • Compiler
      • Grammar
      • Parser
        • Operator
        • Token
      • Postfix
        • Operands
        • Operator
        • Token
      • Scanner
        • Converter
      • Token
  • Demo
  • None

Classes

  • Benchmark
  • Controller
  • GrammarDecorator
  • Model
  • NativeEval
  • Presenter

Functions

  • examples
  • expressionsToLines
  • grammar
  • transformVars
  • Overview
  • Namespace
  • Class
  • Tree
 1: <?php
 2: 
 3: namespace Demo;
 4: 
 5: use BN\Compiler\Grammar\GrammarBuilder;
 6: use BN\OperatorsFactory;
 7: use BN\NumberFactory;
 8: use BN\Compiler\Scanner\Converter\LexemeToBNNumber;
 9: 
10: function grammar()
11: {
12:     $numbers = new NumberFactory();
13:     $operators = new OperatorsFactory();
14:     $toNumber = new LexemeToBNNumber();
15:     $grammar = new GrammarDecorator($toNumber);
16:     return $grammar
17:         ->statementsSeparator(';')
18:         ->whiteSpace("\n", "\r", "\n\r", "\t", ',')
19:         ->assign('=')
20:         ->brackets('(', ')')
21:         ->unarySigns('-', '+')
22:         ->numberConstant('PI', $numbers->createPI())
23:         ->numberConstant('π', $numbers->createPI())
24:         ->numberConstant('e', $numbers->createEulerNumber())
25:         ->operators(
26:             $operators->getAll()
27:         );
28: }
29: 
30: class GrammarDecorator extends GrammarBuilder
31: {
32:     public $keywordsLanguage = array();
33:     public $keywordsConstants = array();
34: 
35:     public function statementsSeparator($statementsSeparator)
36:     {
37:         $this->keywordsLanguage[] = $statementsSeparator;
38:         return parent::statementsSeparator($statementsSeparator);
39:     }
40: 
41:     public function assign($assignOperator)
42:     {
43:         $this->keywordsLanguage[] = $assignOperator;
44:         return parent::assign($assignOperator);
45:     }
46: 
47:     public function keyword($symbol, $tokenType)
48:     {
49:         $this->keywordsLanguage[] = $symbol;
50:         return parent::keyword($symbol, $tokenType);
51:     }
52: 
53:     public function numberConstant($symbol, $value)
54:     {
55:         $this->keywordsConstants[] = $symbol;
56:         return parent::numberConstant($symbol, $value);
57:     }
58: }
59: 
BN-PHP - Big Number data type for PHP API documentation generated by ApiGen 2.8.0