Class: YARD::Parser::Base Abstract
- Inherits:
-
Object
- Object
- YARD::Parser::Base
- Defined in:
- lib/yard/parser/base.rb
Overview
Represents the abstract base parser class that parses source code in a specific way. A parser should implement #parse, #tokenize and #enumerator.
Registering a Custom Parser
To register a parser, see SourceParser.register_parser_type
Direct Known Subclasses
Class Method Summary collapse
-
.parse(source, filename = nil) ⇒ Object
Convenience method to create a new parser and #parse.
Instance Method Summary collapse
-
#enumerator ⇒ Array?
abstract
This method should be implemented to return a list of semantic tokens representing the source code to be post-processed.
-
#initialize(source, filename) ⇒ Base
constructor
This default constructor does nothing.
-
#parse ⇒ Base
abstract
This method should be implemented to parse the source and return itself.
-
#tokenize ⇒ Array
abstract
This method should be implemented to tokenize given source.
Constructor Details
#initialize(source, filename) ⇒ Base
This default constructor does nothing. The subclass is responsible for storing the source contents and filename if they are required.
25 26 27 |
# File 'lib/yard/parser/base.rb', line 25 def initialize(source, filename) raise NotImplementedError, "invalid parser implementation" end |
Class Method Details
.parse(source, filename = nil) ⇒ Object
Convenience method to create a new parser and #parse
17 18 19 |
# File 'lib/yard/parser/base.rb', line 17 def self.parse(source, filename = nil) new(source, filename).parse end |
Instance Method Details
#enumerator ⇒ Array?
This method should be implemented to return a list of semantic tokens representing the source code to be post-processed. Otherwise the method should return nil.
51 52 53 |
# File 'lib/yard/parser/base.rb', line 51 def enumerator nil end |
#parse ⇒ Base
This method should be implemented to parse the source and return itself.
32 33 34 |
# File 'lib/yard/parser/base.rb', line 32 def parse raise NotImplementedError, "#{self.class} must implement #parse" end |
#tokenize ⇒ Array
This method should be implemented to tokenize given source
39 40 41 |
# File 'lib/yard/parser/base.rb', line 39 def tokenize raise NotImplementedError, "#{self.class} does not support tokenization" end |