Commit graph

46 commits

Author SHA1 Message Date
2120417f76 [parser] Add test for longer dotted pair: (ab cd . ef) 2018-09-08 16:09:44 -07:00
c6696c4f8b [parser] Handle dotted pairs! 2018-09-08 16:06:23 -07:00
fe271dfd8b [parser] We do not need the return value of pop() 2018-09-08 16:05:33 -07:00
c14c939ad3 [parser] ListParser can handle lists of more than 2 elements 😮
As ListParser sees items within its list, it assembles a vector of Pairs. When
the parser encounters ')', it assembles the pairs into an actual linked list and
returns the root Pair.

This work also revealed that I was asserting incorrectly in my single_pair test.
It should return Null instead of an empty Pair. Neat.

Closes #17.
2018-08-26 22:24:17 -07:00
c02706e36f [parser] Add failing test for #17 2018-08-26 18:23:40 -07:00
ae63ce8e20 [parser] Add a test for parsing bools
Related to #13
2018-08-26 17:48:22 -07:00
4fab810d1f [parser] Add BoolParser and hook it up to existing parsers
Closes #13.
2018-08-26 17:43:59 -07:00
fe478fadc7 [parser] Reorganize NodeParsers into parsers/ subdirectory 2018-08-26 17:32:09 -07:00
8d8cf34234 [parser] Simple REPL that parses input and prints output 2018-08-25 20:38:54 -07:00
cf503838ae [parser] Add a single pair test 2018-08-25 20:21:18 -07:00
d312c41dc7 [parser] Integration test of parsing a single Sym! 2018-08-25 11:46:42 -07:00
37455641ec [parser] Attempt to write a unit test; realize you need a way to check for equality of objects 🤷 2018-08-25 07:59:43 -07:00
683c9df243 [parser] Handle the result of passing a subparser's result to the next parser in the stack 2018-08-25 07:58:49 -07:00
580a71c997 [parser] This resolved a warning about this variable's value being unread -- idk what is going on here 2018-08-25 07:57:45 -07:00
c35fce7727 [parser, types] Call subparser_completed 2018-08-24 21:07:04 -07:00
d3520be67e [parser] Add subparser_completed() method to NodeParser and implementing Parsers 2018-08-24 21:06:24 -07:00
0a9f235836 [parser] Be a little nicer about line wrapping 2018-08-24 17:21:45 -07:00
7b90b5d229 [parser] Fix crash
- Create a ProgramParser on each call of next()
- Fix up ending condition check
2018-08-24 17:19:33 -07:00
fea93f44eb [parser] Clean up the prints 2018-08-24 17:12:54 -07:00
e822a6b6ec [parser] Clean up a little; add some prints for debugging 2018-08-24 15:43:19 -07:00
1ff349e147 [parser] Clean up some syntax and warnings 2018-08-24 08:33:06 -07:00
976675027f [parser] Handle None from input 2018-08-24 08:26:08 -07:00
96e92230ed [parser] Fill in the iteration cases 2018-08-24 08:14:39 -07:00
dbd6329dd6 [parser] Hand off lex to current parser and collect the result 2018-08-24 08:05:39 -07:00
d13396bb5d [parser] Fill in some framing comments; pass lexer errors out directly 2018-08-24 08:00:33 -07:00
d9abd033e7 [parser] Flatten the matches 2018-08-24 07:54:00 -07:00
2f9c16ff38 [parser] Working out the structure of this stupid Parser::next() 2018-08-23 20:36:41 -07:00
4bade1af4a [parser] Fill out ProgramParser 2018-08-23 20:27:50 -07:00
80bf4b7bf1 [parser] Expand ParseError; add a ProgramParser to start things off 2018-08-23 20:21:59 -07:00
6aed66d2b5 [parser] Add ProgramParser in its own module 2018-08-23 20:20:12 -07:00
4cd46d85a9 [parser] Improve this error message 2018-08-23 18:04:56 -07:00
9c06b293f9 [parser] Determine when to parse a new list and when to prepare to parse the current list 2018-08-23 18:04:44 -07:00
8e9fde7a9f [parser, types] Add Obj::take() and use it to take the Obj from the parser when it is done 2018-08-23 18:04:04 -07:00
929846152e [parser, types] Clean up obj parsers
- Define ListParser, SymParser in their own separate modules
- Add some stuff to types to make working with them more ergonomic
2018-08-23 17:52:56 -07:00
0208ecb4d2 [parser] Continuing to sketch the parser 2018-08-20 16:14:17 -07:00
8475720a71 Add accessor for Lex::value 2018-08-20 15:21:20 -07:00
cabe40bd7a [parser] Skeleton IdParser and ListParser for Ids and Lists respectively 2018-08-19 22:30:49 -07:00
027854d162 [parser] Print things in main() as the thing 2018-08-19 22:11:08 -07:00
d7bffdc432 [parser] Add parsers field to Parser
This will be a stack of node-specific parsers. As you descend the tree, a new
parser will be created for each node we visit.
2018-08-19 22:04:05 -07:00
52ede10d5e [parser] Remove program.rs 2018-08-19 21:15:07 -07:00
efe0c27d93 Make the Parser dump tokens and quit
Write a main() for sibilparser that just does that.
2017-06-18 17:34:46 -07:00
d783e561da Strip down the parser (again...) 2017-04-29 08:58:02 -07:00
076d391d4b Remove list.rs from the parser 2017-04-22 15:22:48 -07:00
1365ab71db More rough sketching of a parser 2017-04-16 11:42:08 -07:00
594b3e44e1 Rough outline of something resembling a parser (again...) 2017-04-15 21:01:28 -07:00
636b0dda9b Create empty sibilparser crate 2017-04-15 10:19:49 -07:00