78 Commits

Author SHA1 Message Date
cd23430f5f DEV: Complex Format expressions are supported now. 2019-10-17 17:57:04 -05:00
b9309ce12b FIX: Don't print an extraneous new line on fmt.
Fixes: #49
2019-10-02 19:55:40 -05:00
49a64251a4 MAINT: cargo fix
Mostly to add the dyn keyword all the places where it will soon
be required.
2019-09-18 20:09:57 -05:00
7e88ed4d84 FIX: deprecated and unsafe code revealed by 1.36 rust release. 2019-07-11 14:53:11 -05:00
f349293400 FEATURE: Support a convert expression. 2019-06-20 19:28:20 -05:00
685917876b DEV: A bunch of improvments
* move comments on the same line up to the previous line.
* All statements should have two new lines between them.
* Handle comments with indentation whitespace properly.
2019-05-24 15:26:11 -05:00
c9b2b9994f DEV: Handle some more expressions. 2019-05-23 20:10:18 -05:00
82d6ca9ecb DEV: Handle comments embedded in not, import or include expressions 2019-05-23 20:02:31 -05:00
ff2aafeb98 DEV: Handle grouped comments with embedded comments. 2019-05-23 19:57:51 -05:00
157f123355 DEV: Handle the functional operators with embedded comments. 2019-05-23 19:52:03 -05:00
f88955517e DEV: Handle TRACE, fail, and format expressions with embedded comments. 2019-05-22 19:05:48 -05:00
e6f6421ca6 DEV: Handle comments embedded in binary expressions and call expressions. 2019-05-22 18:52:10 -05:00
a21d4bd235 DEV: Handle comments between list elements. 2019-05-22 18:34:42 -05:00
94ca738ee1 DEV: Handle comments in tuple field expressions 2019-05-22 18:29:25 -05:00
957d0c6102 DEV: Handle comments between statements. 2019-05-21 20:54:15 -05:00
d884ea9385 REFACTOR: Remove the err field, rename indent -> indent_size 2019-05-21 18:41:15 -05:00
6661e02a75 DEV: Generate a comment map as part of our tokenization.
The comment_map is optional but if passed in it will be populated
during tokenization.
2019-05-20 21:05:58 -05:00
f3a08718dc MAINT: Tests for fail and trace expressions. 2019-05-17 21:21:20 -05:00
aa9e664c0d FEATURE: Improvements to format expression printing. 2019-05-17 21:19:01 -05:00
9b99bc026c FEATURE: Improvements to func expression pretty printing. 2019-05-17 20:06:06 -05:00
0d78438c2a FEATURE: Fix bug in out statements;
Also add tests for modules.
2019-05-17 19:58:48 -05:00
525cdd32e6 FEATURE: Use the AST Pretty Printer for TRACE and assert output. 2019-05-17 19:49:13 -05:00
cd6307824f FEATURE: more fixes and unit tests.
Call and copy have been tweaked properly.
2019-05-17 19:31:29 -05:00
d122fe6e6f FEATURE: Fix a number of bugs found by adding unit tests :-D 2019-05-17 18:33:47 -05:00
e86827f613 FEATURE: Begin the work of pretty printing the AST. 2019-05-17 17:20:57 -05:00
2821d0953b FEATURE: First make our AST Walker a little more ergonomic.
Use a trait instead of callbacks to make mutable it possible to support
Walkers with mutable internal state when necessary.
2019-05-14 20:54:06 -05:00
ec756636b0 FEATURE: Add a TRACE pragma for assitance debugging ucg files. 2019-04-26 19:19:43 -05:00
df8834dddc FIX: Grouped Expressions store their position properly now. 2019-03-26 20:45:33 -04:00
e095cb3235 REFACTOR: AST changes to support optional defaults. 2019-03-01 16:52:08 -06:00
c8443b9181 MAINT: The great TODO cleanup. 2019-02-27 19:52:06 -06:00
d9b2c0cb00 FEATURE: out expression for modules.
issue #35
2019-02-21 20:09:47 -06:00
8639912567 FEATURE: BuildError no longer requires a position. 2019-02-19 17:38:13 -06:00
c7a87894ba FEATURE: Add the %% modulo operator. 2019-02-18 21:09:42 -06:00
6de26820c8 FEATURE: better error reporting for out statements 2019-02-06 21:06:05 -06:00
4d6fd87c3d FEATURE: Allow expressions for functions in reduce/map/filter. 2019-01-30 20:35:28 -06:00
3c1b3ce86a FEATURE: Expression format string support.
Experimental support for Issue #23
2019-01-28 21:30:37 -06:00
f1c7d76fdd REFACTOR: The great renaming macro -> func. 2019-01-24 20:04:40 -06:00
016e4a22db FEATURE: Add the not operator. 2019-01-24 16:53:02 -06:00
b56fb25c28 REFACTOR: Carry the source file around with the input iter. 2019-01-23 20:02:35 -06:00
6d5d4c79de FEATURE: Declarative failures.
FIXES: #30
2019-01-19 11:39:37 -06:00
eaa3e84179 FIX: Treat is as a regular binary operator
do syntax checks post parse. Also to avoid collisions with
keywords require quoting the types.
2019-01-19 10:49:33 -06:00
25d84a771e FEATURE: Add the is operator
This operator tests that something is of a certain base type.
2019-01-18 18:47:11 -06:00
d40e89fea9 FEATURE: Boolean Operators. 2019-01-17 19:20:01 -06:00
890387b4cc FEATURE: Macros are just an expression now.
This is a breaking change for the map, filter, and reduce expressions
but happily a forward compatible change for macros themselves.
2019-01-16 19:27:58 -06:00
e838554fff FIX: Modules were attempting to conver std imports into absolute paths. 2019-01-15 19:22:10 -06:00
685ee7407e FEATURE: make macros close over their environment.
The benefits are great enough to allow this and the benefits of
not allowing closures are not terribly useful.

We do not get the same benefits for modules though so we don't add
it to them.
2019-01-14 18:23:39 -06:00
54faeede5e FEATURE: Imports as expressions.
This is a breaking change for the language. However it makes a number of things
easier. Like importing specific symbols from a file.

adds: #28
2019-01-13 14:10:43 -06:00
6f9ba2ac33 FEATURE: Add the range expression.
fixes: #24
2019-01-10 19:40:32 -06:00
d989e47706 FEATURE: Use a better DSL for unit tests.
* Assert now requires a tuple instead of a string containing
  statements.
* We include a helpful ucg based unit testing module.

Fixes: #26
2019-01-10 17:17:57 -06:00
8dc5b43a93 FIX: our DOT binary operator change broke symbol validation logic for macros. 2019-01-07 19:43:50 -06:00