Class: Lrama::Parser
- Inherits:
-
Object
- Object
- Lrama::Parser
- Includes:
- Report::Duration
- Defined in:
- lib/lrama/parser.rb,
lib/lrama/parser/token_scanner.rb
Overview
Parser for parse.y, generates a grammar
Defined Under Namespace
Classes: TokenScanner
Constant Summary collapse
- T =
Lrama::Lexer::Token
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.
11 12 13 |
# File 'lib/lrama/parser.rb', line 11 def initialize(text) @text = text end |
Instance Method Details
#parse ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/lrama/parser.rb', line 15 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.compute_first_set grammar.validate! grammar end end |