trait Tlf\Lexer\Php\ClassMemberDirectives

Constants

Properties

  • `protected $_class_member_directives = [

      'class_modifier'=> [
          'start'=>[
              'match''/(static|public|protected|private) /',
              'rewind'=>1,
              'previous.append''modifier'],
              'buffer.clear'=>true,
              'directive.stop_others'=>true,
              'then :class_modifier'=>[
                  'start'=>[
                      'rewind'=>1,
                      'previous.append''modifier'],
                      'buffer.clear'=>true,
                       'directive.pop 1',                        'stop',
                      'halt',
                  ]
              ],
              'then :separator'=>[
                  'stop'=>[
                      'rewind 1',
                      'previous.append''modifier'],
                      'forward 1',
                  ],
              ],
              'then :class_const',
              'then :class_property',
              'then :varchars'=>[
                  'start'=>[
                      'rewind'=>1,
                      'previous.append''modifier'],
                      'buffer.notin keyword',
                      'previous.set''method.name',
                       'previous.append'=>['class.name', 'method.definition'],                        'stop',
                      'directive.pop 1',
                      'then :class_method',
                      'then :separator'=>[
                          'stop'=>[
                              'previous.append''method.definition'],
                          ]
                      ],
                  ]
              ],
               'then []'=>[                     ':separator',                     ':class_const',                     ':class_property',                     ':class_method',                 ],            ],
          'stop'=>[
              'stop',
              'rewind'=>1,
          ],
      ],
    
    
      'class_method'=>[
          'start'=>[
              'match''(',
              'previous.append''method.definition',
              'rewind'=>1,
              'ast.new'=>[
                  '_addto''methods',
                  '_type''method',
                  'modifiers''_lexer:previous modifier',
                  'docblock''_lexer:unsetPrevious docblock',
                  'name''_lexer:unsetPrevious class.name',
              ],
              'forward'=>1,
              'buffer.clear'=>true,
              'then :argslist_close',
              'then :strings'=>[
                  'start'=>[
                      'previous.append''method.definition''method.arglist'],
                      'buffer.clear'
                  ],
                  'stop'=>[
                      'previous.append''method.definition''method.arglist'],
                      'buffer.clear'=>true,
                  ],
              ],
          ]
      ],
    
      'argslist_close'=>[
          'start'=>[
              'match' => ')',
              'rewind 1',
              'previous.append method.arglist',
              'forward 1',
              'previous.append method.definition',
              'buffer.clear',
              'stop',
              'directive.pop 1',
              'then :block' => [
                  'start'=>[
                      'rewind 1',
                      'buffer.clear',
                      'this:storeMethodDefinition',
                      'forward'=>1,
                      'buffer.clear true',
                      'then :block'=>[
                          'stop'=>[
                              'buffer.clear',
                          ]
                      ],
                      'then :block.stop'=>[
                          'start'=>[
                              'rewind'=>1,
                              'directive.pop 1',
                          ]
                      ],
                      'then :separator',
                      'then :strings'=>[
                          'stop'=>[
                              'buffer.clear'=>true,
                          ]
                      ],
                  ],
                  'stop'=>[
                      'directive.pop 2',
                      'ast.pop',
                      'buffer.clear'=>true,
                  ],
              ],
          ],
      ],
    
      'class_property'=>[
          'start'=>[
              'match''$',
              'ast.new'=>[
                  '_addto''properties',
                  '_type''property',
                  'modifiers''_lexer:previous modifier',
                  'docblock''_lexer:unsetPrevious docblock'
              ],
              'rewind'=>1,
              'buffer.clear true'=>true,
              'forward'=>1,
              'previous.append''property.declaration'],
              'buffer.clear'=>true,
              'then :varchars'=>[
                  'start'=>[  capture property name                        'rewind'=>1,
                      'previous.append''property.declaration'],
                      'ast.set''name',
                      'directive.pop 1',
                      'buffer.clear'=>true,
                      'then :separator'=>[
                          'start'=>[
                              'previous.append''property.declaration'],
                          ],
                      ],
                      'then :+equals'=>[
                          'start'=>[
                              'match''=',
                              'previous.append''property.declaration'],
                              'buffer.clear'=>true,
                              'then :separator'=>[
                                  'stop'=>[
                                      'rewind 1',
                                      'previous.append''property.declaration'],
                                      'forward 1',
                                  ],
                              ],
                              'then :strings'=>[
                                  'stop'=>[
                                      'previous.append''property.declaration'],
                                      'buffer.clear'=>true,
                                  ],
                              ],
                              'then :+semicolon'=>[
                                  'start'=>[
                                      'match'';',
                                      'previous.append''property.declaration'],
                                      'rewind'=>1,
                                       'ast.set'=>'declaration',                                        'this:setPropertyDeclaration',
                                      'forward'=>1,
                                      'buffer.clear'=>true,
                                      'directive.pop'=>3,
                                      'ast.pop'=>true,
                                  ]
                              ]
                          ]
                      ],
                      'then :+semicolon'=>[
                          'start'=>[
                              'match'';',
                              'previous.append''property.declaration'],
                              'rewind'=>1,
                               'ast.set'=>'declaration',                                'this:setPropertyDeclaration',
                              'forward'=>1,
                              'buffer.clear'=>true,
                              'directive.pop'=>2,
                              'ast.pop'=>true,
                          ],
                      ],
                  ],
              ],
          ],
      ],
    
      'class_const'=>[
          'stop'=>[
              'stop',
              'rewind 1',
          ],
          'start'=>[
              'match''const ',
              'ast.new'=>[
                  '_type''const',
                  '_addto''consts',
                  'docblock''_lexer:unsetPrevious docblock',
                  'definition''_token:buffer',
                  'modifiers''_lexer:unsetPrevious modifier',
              ],
              'buffer.clear',
              'then :varchars'=>[ catch the const's name                    'start'=>[
                      'rewind 1',
                      'buffer.notin keyword',
                      'ast.append''definition',
                      'ast.set''name',
                      'buffer.clear'=>true,
                       'directive.pop 1',                        'stop',
                       'halt',                        'then :+equals-forconst'=>[
                          'start'=>[
                              'match''=',
                              'ast.append''definition',
                              'buffer.clear',
                              'then :separator'=>[
                                  'stop'=>[
                                      'ast.append''definition',
                                  ],
                              ],
                              'then :strings'=>[
                                  'start'=>[
                                      'buffer.clear',
                                  ],
                                  'stop'=>[
                                      'ast.append''definition',
                                      'buffer.clear',
                                  ],
                              ],
                              'then :+semicolon'=>[
                                  'start'=>[
                                      'match'';',
                                      'ast.append''definition',
                                      'directive.pop 4',
                                      'buffer.clear',
                                  ],
                              ]
                          ],
                          'stop'=>[
                              'stop',
                              'rewind 1',
                          ]
                      ],
                  ],
              ]
          ]
      ],
    

    close the directive ];`

Methods