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