67 Commits

Author SHA1 Message Date
547c271aa1 FEATURE: Special case the std/ import prefix.
It's a reserved import path for our std library.

closes #27
2019-01-13 20:35:23 -06:00
50a3d33208 FEATURE: Generate a hashmap of path to String for std libraries.
prework for #27
2019-01-13 20:34:50 -06:00
c4505ac2ab FEATURE: Add a counter for our assertion output per file. 2019-01-13 14:20:08 -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
0f7498884a FEATURE: No longer require the dsl to output ok vs not ok. 2019-01-13 13:53:24 -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
83a641e740 FEATURE: Add regular expression comparison operators. 2019-01-07 19:38:25 -06:00
e46496c666 FEATURE: Add a reduce operator for lists and tuples.
fixes #19
fixes #21
2019-01-06 20:57:37 -06:00
a8c4ce1157 FEATURE: Allow map and filter on tuples. 2019-01-06 16:35:35 -06:00
ef01f166b2 REFACTOR: Add a little more abstraction for map and filter.
* Clearer and easier to follow code.
* Smaller functions.
* Easier to add future functionality.
2019-01-06 15:45:00 -06:00
dbadfa1c4c FEATURE: Suppport quoting self and env when we need them as tuple fields. 2019-01-06 14:28:29 -06:00
2c3f9c7b8f Add base64 as an importer type aside from string. 2019-01-05 14:33:12 -06:00
7793404975 MAINT: use dyn syntax for trait objects now. 2019-01-05 13:27:51 -06:00
a830047784 FEATURE: Add include as a string functionality.
Includes happy path tests for including a string.

fixes #15
2019-01-04 10:03:50 -06:00
59343d71d5 FEATURE: add a conatins operator
Adds the `in` operator that checks for fields in tuples and
elements in a list.

Fixes: #12
2019-01-03 11:42:11 -06:00
9ec73868b5 FEATURE: evaluate dot selectors as a binary operator now.
Also fixed a precedence bug in our parser.
2019-01-02 16:57:55 -06:00
a028960a43 REFACTOR/FEATURE: Treat selectors as an operator. 2018-12-31 17:31:34 -06:00
fb292b4684 REFACTOR: Unify the Binary Operator AST data structures. 2018-12-31 17:24:07 -06:00
2b7c8e65f8 REFACTOR: Better scope handling. 2018-12-31 17:13:58 -06:00
2c9abddb61 REFACTOR: normalize eval method naming for values. 2018-12-31 11:08:39 -06:00
05aa57ae7f REFACTOR: Builder => FileBuilder 2018-12-31 11:08:32 -06:00
821f1e9fb2 MAINT: Cleanup
TODO and FIXME removals.
Replaced unnecessary alt_peek! macro.
Renamed some types for clarity.
2018-12-14 16:01:17 -06:00
2b47ca8617 FEATURE: Use UCG_IMPORT_PATH to identify the import paths.
fixes #9
2018-12-13 19:03:22 -06:00
f26e26d2ad FEATURE: Support search paths for import statements.
A step toward #9

Adds builder support. We do not yet wire in the import paths.
2018-12-13 18:29:41 -06:00
aab89f2d1a MAINT: Removed debug print statements. 2018-12-12 19:05:20 -06:00
8009c6a8a5 MAINT: Formatting cleanup. 2018-12-10 21:27:44 -06:00
9b5b7aa793 MAINT: Fix try macros to use ? 2018-12-06 13:14:01 -06:00
e9a0bde631 MAINT: Opt in to 2018 edition of Rust. 2018-12-06 12:23:52 -06:00
1d5f0319f3 FEATURE: Detect import cycles. 2018-11-28 21:12:09 -06:00
8d73b5f648 CLEANUP: Don't use file everywhere in error messages. 2018-11-28 20:48:04 -06:00
163420ff55 REFACTOR: More consistent naming for Builder methods. 2018-11-28 20:23:32 -06:00
960dbef591 REFACTOR: Pass file into the constructor for builders. 2018-11-28 20:11:34 -06:00
9d2d3843a5 MAINT: comment cleanup. 2018-11-27 15:03:27 -06:00
fe4bb1c9d7 FEATURE: allow tuples to have true or false as field names.
this allows selects where the condiotion is a boolean and you can choose
the true or false branch.
2018-11-26 23:08:14 -06:00
aa183960d3 FEATURE: support a strict mode for building.
When strict mode is off then give a warning for unset env variables
and return NULL.
2018-11-26 21:36:50 -06:00
1365a38700 FEATURE: Check bindings against the reserved word list for imports and let bindings. 2018-11-26 20:22:37 -06:00
5e07f24d91 FEATURE: handle ENPTY specially. in copy expressions. 2018-11-25 13:26:47 -06:00
b797f099b4 REFACTOR: root is actually always a file. Lets call it as such.
Also have a helper function to get the current build_dir.
2018-11-25 13:03:33 -06:00
fa96c7c0ef FEATURE: UCG Parameterized Modules
closes #10

Squashed commit of the following:

commit 3101c2bb9a385ed9e84481d36906a3e3ce93e571
Author: Jeremy Wall <jeremy@marzhillstudios.com>
Date:   Wed Nov 21 20:10:31 2018 -0600

    FEATURE: Module evaluation

    * handle evaluating the module definition.
    * Handle performing a module instantiation via the copy syntax.

commit 4ca863896b416e39f0c8eacc53384b9c514f6f14
Author: Jeremy Wall <jeremy@marzhillstudios.com>
Date:   Tue Nov 20 18:38:19 2018 -0600

    FEATURE: Add module parsing expression parsing to ucg.

    changes toward issue #10
2018-11-23 12:51:13 -06:00
bdf56f6d3c FEATURE: Allow self references when doing a tuple copy.
Closes #3
2018-11-16 10:36:06 -06:00
15026423db REFACTOR: Rename our error::Error type to BuildError. 2018-11-12 18:07:31 -06:00
d2f0ea9f24 FEATURE: Better error reporting.
Slight change to how assert works to support this. We no longer automatically add
a semicolon to the expressions we require the user to right them. This updates the
docs to illustrate that and reformats our integration test suite for this and
readability.
2018-11-06 19:40:56 -06:00
6712fc9bb5 Merge squash of the no_more_nom branch
commit e4c80b19f5149fb7dba0a9b785e22ff5323b5470
Author: Jeremy Wall <jeremy@marzhillstudios.com>
Date:   Sun Nov 4 09:54:16 2018 -0600

    FEATURE: report better stacktraces for parsing.

commit 24b97c1037d6ddbe21f32e172b1c14cd2cfb9910
Author: Jeremy Wall <jeremy@marzhillstudios.com>
Date:   Wed Oct 17 19:00:29 2018 -0500

    FEATURE: Use context for our error reporting.

commit c22d397545e7575608e34561a274745b28be8c2c
Author: Jeremy Wall <jeremy@marzhillstudios.com>
Date:   Sun Oct 14 14:18:42 2018 -0500

    FIX: Better error reporting.

commit 7f47dc3f38bf6a3e8686c1fa3fd50ef97d4bf3af
Author: Jeremy Wall <jeremy@marzhillstudios.com>
Date:   Sat Oct 13 19:42:22 2018 -0500

    REFACTOR: Pass our offsets everywhere.

commit 91d7ed690bfd9989270ba9fa4f44c70f513d54b9
Author: Jeremy Wall <jeremy@marzhillstudios.com>
Date:   Sun Sep 23 15:08:45 2018 -0500

    REFACTOR: Use abortable_parser.
2018-11-05 21:34:12 -06:00
fb5247e98f FEATURE: Use offsets for errors when parsing an assert. 2018-08-30 19:50:57 -05:00
d288924fbb FEATURE: output the parse or build errors of assert statements. 2018-08-29 20:12:54 -05:00
ae419ea3e7 REFACTOR: Move the ucg IR into it's own module. 2018-08-24 19:36:36 -05:00
3ed8fe332f FEATURE: Support boolean and EMPTY as a format string variable.
Also add format string regression tests.
2018-08-24 19:36:22 -05:00
f982194518 FEATURE: Allow filtrator expressions to return boolean.
Also a bugfix where we were accidentally mapping instead of filtering.
2018-08-22 18:57:38 -05:00
f9cdd4f3f6 BUGFIX: Regression tests for our list operators and bugfixes. 2018-08-21 23:05:42 -05:00