e7e8690463
Add structopt and base argument parsing
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-07 18:31:08 -04:00
1232eca64c
Add function expression parsing
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-07 17:43:39 -04:00
d90ecfd4d7
cargo fmt
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-06 18:04:07 -04:00
10e37e2707
Add dot binary op expression parsing
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-06 18:02:13 -04:00
d238610f33
Add dot as binop
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-06 17:55:56 -04:00
5d3021ced7
Add indexing expression parsing and tests
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-06 17:55:25 -04:00
44970dbf97
Add dot token
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-06 17:41:46 -04:00
5c505e5ae5
Add function call expressions
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-06 17:39:31 -04:00
bd87e9dd30
Add block expression parsing and test
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-06 17:14:55 -04:00
66af3dcc53
Add base statement parsing
...
Assign statements and standalone expression statements are added, plus
some tests.
Additionally, starting tokens are implemented using lazy_static!{} so
that they can be mixed and matched.
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-06 16:57:28 -04:00
7698e49baf
cargo fmt
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-05 17:22:39 -04:00
ae99bbfc1e
Add object parsing and tests
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-05 17:21:12 -04:00
4c2f18b7c9
Update parser bin_expr testing to be more consistent with the rest of the tests
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-05 16:52:46 -04:00
5622eb96bc
Add ObjBrace token
...
To distinguish between objects and code bodies, an object is delimited
by curly braces, prefixed with a percent sign. Ex:
obj = %{
key = value
}
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-05 16:43:38 -04:00
a4f289fb53
Add more expressions to parser, add EOL and newline tokens
...
* Lexer recognizes semicolons as EOL tokens, and newline tokens
* Parser can be configured to ignore newlines (which is also used
internally)
* Newlines are allowed in lists, tuples, and parenthesized expressions
* Add a bunch of tests for the new stuff
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-05 16:38:07 -04:00
d9edf21d16
Add expression parsing
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-05-02 18:42:01 -04:00
28d29c2270
Add parser and AST, remove some stuff from lexer
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-04-27 20:17:16 -04:00
ce97d90f9d
Move lexer to use regex instead of hand-rolled lexing
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-04-27 19:50:46 -04:00
58421a0469
Initial commit with lexer
...
Signed-off-by: Alek Ratzloff <alekratz@gmail.com >
2020-04-27 12:42:17 -04:00