trait Tlf\Lexer\Php\ClassDirectives

Constants

Properties

  • `protected $_class_directives = [

      'php_class_code'=>[
          'is'=>[
              ':separator',
              ':use_trait',
              ':class_modifier',
               ':php_close',                 ':php8_attribute',
          ],
      ],
    
      'use_trait'=>[
          'start'=>[
              'match''use ',
              'buffer.clear'=>true,
          ],
          'stop'=>[
              'match' => ';',
              'rewind'=>1,
              'this:captureUseTrait',
              'forward'=>1,
              'buffer.clear'=>true,
          ],
      ],
    
      'class'=>[
          'stop'=>[
              'inherit :block.stop match',
               'directive.pop 1',                'stop',
              'buffer.clear',
          ],
          'start'=>[
              'match''/^(class|trait)[^a-zA-Z0-9_]$/',
              'rewind'=>1,
              'ast.new'=>[
                  '_type''_token:buffer',
                  '_addto''_token:buffer',
                  'docblock''_lexer:unsetPrevious docblock',
                  'namespace''_lexer:previous namespace.name',
                  'declaration''_token:buffer',
              ],
              'buffer.clear'=>true,
              'then :separator'=>
              [
                  'start'=>[
                      'rewind 1 //okayokay',
                      'ast.append declaration',
                  ],
                  'stop'=>[
                       'inherit :separator.stop match',                         'previous.append class.declaration !'=>'_lexer:unsetPrevious whitespace',                        'rewind 1',
                      'ast.append declaration',
                      'forward 1',
                      'directive.pop 1',
                      'then :class_name',
                      'then :separator'=>[
                          'stop'=>[
                              'rewind 1',
                              'ast.append declaration',
                              'forward 1',
                          ],
                      ],
                  ]
              ]
          ]
      ],
    
      'class_name'=>[
          'start'=>[
              'inherit :varchars.start match',
              'start',
              'ast.append declaration !''_lexer:previous php.varchars',
              'ast.set name !''_lexer:unsetPrevious php.varchars',
              'buffer.clear',
              @todo catch extends & implements                'then :class_block',
              'then :separator'=>[
                  'start'=>[
                      'rewind 1',
                      'ast.append declaration',
                      'buffer.clear',
                      'forward 1',
                  ],
                  'stop'=>[
                      'rewind 1',
                      'ast.append declaration',
                      'forward 1',
                  ],
              ],
          ],
      ],
    
      'class_block'=>[
          'start'=>[
              'inherit :block.start match',
              'start',
              'rewind'=>1,
              'ast.append declaration',
              'forward 1',
              'buffer.clear'=>true,
              'then :php_class_code',
              'then.pop :block.stop',
          ],
          'stop'=>[
              'rewind 1',
              'buffer.clear'=>true,
              'directive.pop 2',
          ],
      ],
    

    close the directive ];`

Methods