Class: Lrama::Parser
- Inherits:
-
Object
- Object
- Lrama::Parser
- Includes:
- Report::Duration
- Defined in:
- lib/lrama/parser.rb
Overview
Parser for parse.y, generates a grammar
Defined Under Namespace
Classes: TokenScanner
Constant Summary collapse
Instance Method Summary collapse
-
#initialize(text) ⇒ Parser
constructor
A new instance of Parser.
- #parse ⇒ Object
Methods included from Report::Duration
enable, enabled?, #report_duration
Constructor Details
#initialize(text) ⇒ Parser
Returns a new instance of Parser.
62 63 64 |
# File 'lib/lrama/parser.rb', line 62 def initialize(text) @text = text end |
Instance Method Details
#parse ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/lrama/parser.rb', line 66 def parse report_duration(:parse) do lexer = Lexer.new(@text) grammar = Grammar.new process_prologue(grammar, lexer) parse_bison_declarations(TokenScanner.new(lexer.bison_declarations_tokens), grammar) parse_grammar_rules(TokenScanner.new(lexer.grammar_rules_tokens), grammar) process_epilogue(grammar, lexer) grammar.prepare grammar.compute_nullable grammar.validate! grammar end end |