Commit graph

455 commits

Author SHA1 Message Date
Charles Baker
f2cd4b1a8d Add lalrc LALR parser compiler 2018-03-31 15:30:37 +13:00
Charles Baker
acd652013b Add ParserStateMachine::transitions() 2018-03-31 15:30:37 +13:00
Charles Baker
90113b9d4f Store identifier in Grammar 2018-03-31 15:30:37 +13:00
Charles Baker
1ea0c4d817 Minor reformatting and renaming to remove get_ prefix 2018-03-31 15:30:37 +13:00
Charles Baker
233afea39f Remove get_ prefix from functions in Item 2018-03-31 15:30:37 +13:00
Charles Baker
c4024a8599 Set associativity and precedence directly, remove unused Directive 2018-03-31 15:30:37 +13:00
Charles Baker
2dd741da6d Make LexerGenerator constructor do nothing, use LexerGenerator::generate() for generation 2018-03-31 15:30:36 +13:00
Charles Baker
99121f8a76 Make Generator constructor do nothing, use Generator::generate() for generation 2018-03-31 15:30:36 +13:00
Charles Baker
d4a517e087 Remove unused functions from Generator 2018-03-31 15:30:36 +13:00
Charles Baker
37eedee5b8 Remove unused lalr::Nil and lalr::nil 2018-03-31 15:30:36 +13:00
Charles Baker
fe04b66b9a Remove redundant Grammar operators for actions and end of expression 2018-03-31 15:30:36 +13:00
Charles Baker
ce8e9c5635 Remove generation-time dependencies from run-time lexer 2018-03-31 15:30:36 +13:00
Charles Baker
fd2968ae4d Use unique_ptr<> to manage RegexAction lifetime 2018-03-31 15:30:36 +13:00
Charles Baker
0ca01fb0df Rename classes involved in lexer runtime from Lexer* to Regex* 2018-03-31 15:30:36 +13:00
Charles Baker
2b85608e87 Rename lexer classes involved in lexer runtime and generation 2018-03-31 15:30:36 +13:00
Charles Baker
ea5e179817 Prioritize lexer tokens by line number 2018-03-31 15:30:36 +13:00
Charles Baker
77f55f2aad Track line number in GrammarParser 2018-03-31 15:30:36 +13:00
Charles Baker
74ddd6b40f Explicitly match the error symbol in GrammarParser 2018-03-31 15:30:36 +13:00
Charles Baker
b58e3e9137 Set symbols referenced in precedence directives as terminal 2018-03-31 15:30:36 +13:00
Charles Baker
3d3c506a49 Add Grammar::parse() for parsing grammars from text 2018-03-31 15:30:36 +13:00
Charles Baker
39a26e5ff7 Remove unused reserving memory from Grammar 2018-03-03 20:40:58 +13:00
Charles Baker
3ff277c678 Add simple recursive descent parser to parser grammars 2018-03-03 20:29:05 +13:00
Charles Baker
8087180333 Make precedence directives set a flag and capture the next symbol call in Grammar 2018-03-03 20:29:05 +13:00
Charles Baker
9c6b0157a1 Add explicit literal, regex, and identifier functions to Grammar 2018-03-03 20:29:05 +13:00
Charles Baker
f8f102ed36 Remove get_*() prefix from ParserUserData accessors 2018-03-03 20:29:05 +13:00
Charles Baker
492365f4be Rename LalrSymbol to Symbol 2018-02-25 14:16:06 +13:00
Charles Baker
4174fa5587 Rename LalrProduction to Production 2018-02-25 14:16:06 +13:00
Charles Baker
fefdcae696 Rename LalrTransition to Transition 2018-02-25 14:16:06 +13:00
Charles Baker
34e31c815c Rename LalrState to State 2018-02-25 14:16:06 +13:00
Charles Baker
374c10d53f Rename LalrNil to Nil 2018-02-25 14:16:06 +13:00
Charles Baker
e13bd8795b Rename LalrItem to Item 2018-02-25 14:16:06 +13:00
Charles Baker
2ae988e674 Rename LalrGenerator to Generator 2018-02-25 14:16:06 +13:00
Charles Baker
9a4a1c5cf2 Rename LalrDirective to Directive 2018-02-25 14:16:06 +13:00
Charles Baker
9f06b4344c Rename LalrAction to Action 2018-02-25 14:16:06 +13:00
Charles Baker
b95d31407e Remove redundant LalrGrammar (replaced by Grammar) 2018-02-25 14:16:06 +13:00
Charles Baker
4882f8cb9c Add implicit production for start symbol to first non-terminal symbol specified 2018-02-25 14:16:06 +13:00
Charles Baker
4b66abb702 Add start, end, and error symbols to Grammar 2018-02-25 14:16:06 +13:00
Charles Baker
cd5d1f1306 Add Grammar::identifier() to access grammar identifier 2018-02-25 14:16:06 +13:00
Charles Baker
62b14ce727 Remove Grammar::begin() and Grammar::end()` 2018-02-25 14:16:06 +13:00
Charles Baker
d540d2c396 Move generation code from Grammar::end() to Grammar::generate() 2018-02-25 14:16:06 +13:00
Charles Baker
6bf53f9be3 Rename GrammarNil to LalrNil 2018-02-25 14:16:06 +13:00
Charles Baker
4568275ebe Rename GrammarDirective to LalrDirective 2018-02-25 14:16:06 +13:00
Charles Baker
b9ea3bf638 Use LalrProduction instead of GrammarProduction in Grammar 2018-02-25 14:16:06 +13:00
Charles Baker
d45015e2ba Delete LalrSymbol.[ch]pp 2018-02-25 14:16:06 +13:00
Charles Baker
d3852c4ed6 Use unique_ptr<> to manage lifetimes of objects in Grammar 2018-02-25 14:16:06 +13:00
Charles Baker
5d4be83cc4 Update include guards in Grammar.hpp to LALR instead of PARSER 2018-02-25 14:16:06 +13:00
Charles Baker
be01fe6d5f Use LalrAction instead of GrammarAction in Grammar 2018-02-25 14:16:06 +13:00
Charles Baker
e57702cc2e Use unique_ptr<> to manage GrammarAction lifetime in Grammar 2018-02-25 14:16:06 +13:00
Charles Baker
96b0d3470f Make LalrAction more self contained and private 2018-02-25 14:16:06 +13:00
Charles Baker
35be0b086f Move population of ParserStateMachine into LalrGenerator 2018-02-25 14:16:06 +13:00