Commit Graph

462 Commits

Author SHA1 Message Date
Kasey White
80a9b7b36a feat: add map support and tuple deconstruction in let 2022-12-08 14:28:30 -05:00
Kasey White
26d2a95618 missing a couple forces 2022-12-08 14:28:30 -05:00
Kasey White
2f7131e9b8 feat: add tuples and streamline conversion of types to and from data 2022-12-07 08:40:23 -05:00
rvcas
45990f1f84 feat: unify tuples and stdlib updates 2022-12-06 22:23:40 -05:00
Kasey White
3f47a1f4b8 fix: constr issue
- also fixed constant parsing
- added new cbor flag to eval

Co-authored-by: rvcas <x@rvcas.dev>
2022-12-05 22:55:57 -05:00
rvcas
7875af7d35 feat: better errors for incorrect contructor making 2022-12-05 18:11:04 -05:00
rvcas
7e6dc978a1 feat: commit latest build assets for sample 2022-12-05 14:18:44 -05:00
rvcas
ed3d143477 feat: rename ir to air 2022-12-05 14:18:44 -05:00
rvcas
24d724e10e chore: fix fmt 2022-12-05 14:18:44 -05:00
Kasey White
3e68204768 replace uplc with uplc_two and move structs over 2022-12-05 14:18:44 -05:00
Kasey White
22fbef2fbe feat: finish up binops and fix constr creation 2022-12-05 14:18:44 -05:00
Kasey White
0fda535c50 feat: add module constants except for tuple 2022-12-05 14:18:44 -05:00
Kasey White
de9302a877 feat: finish list destructure in when matches 2022-12-05 14:18:44 -05:00
Kasey White
8cbdf97d22 finish uplc code gen for complex clauses with constr 2022-12-05 14:18:44 -05:00
Kasey White
f48039fd4f Add ability to generate ir with complex constructor cases 2022-12-05 14:18:44 -05:00
Kasey White
64cbae938d Add clause guard to IR and use it for complex clauses 2022-12-05 14:18:44 -05:00
Kasey White
e1d6ffa92a add more binops 2022-12-05 14:18:44 -05:00
Kasey White
044d609a24 feat: nested constr access and module funcs now work 2022-12-05 14:18:44 -05:00
Kasey White
3d3beef7d4 feat: uplc code gen for functions and minor recursion fix 2022-12-05 14:18:44 -05:00
Kasey White
8f984ad131 fix up function definitions in the IR 2022-12-05 14:18:44 -05:00
Kasey White
02ee129615 feat: function insertion IR done, code gen will be easy 2022-12-05 14:18:44 -05:00
Kasey White
29a30aa61f feat: finished when constr is for IR and code gen 2022-12-05 14:18:44 -05:00
Kasey White
3fb3a3240a checkpoint 2022-12-05 14:18:44 -05:00
rvcas
86ea41adc3 feat: start when expressions 2022-12-05 14:18:44 -05:00
Kasey White
8b24a66b7e add field access and list patterns are finished
Co-authored-by: rvcas <x@rvcas.dev>
2022-12-05 14:18:44 -05:00
Kasey White
abe29a3883 make progress on list deconstruction with IR 2022-12-05 14:18:44 -05:00
Kasey White
2a00b896fc create ir and start to replace plutus code gen with ir 2022-12-05 14:18:44 -05:00
Kasey White
6870a5cab7 fix minor scope issue 2022-12-05 14:18:44 -05:00
Kasey White
e3267310c5 remove unListData 2022-12-05 14:18:44 -05:00
rvcas
84da69411d chore: fix test 2022-12-04 21:12:29 -05:00
rvcas
f2c359f9d5 test(parser): add record creation tests 2022-12-04 21:12:29 -05:00
rvcas
85f839abe4 feat: support punning in record updates 2022-12-04 21:12:29 -05:00
rvcas
9ebc836b89 feat: handle punning in a non-ambiguous way 2022-12-04 21:12:29 -05:00
rvcas
391849bf37 feat: parser improvements
- record creation with punning
- disambiguate if condition from record creation with punning
- split parser tests up into many smaller ones
2022-12-04 21:12:29 -05:00
KtorZ
375499930a Add UPLC support for 'ProtoList' & 'ProtoPair' constants
Supersedes #35.

  The syntax for these elements isn't "set in stone"; in the sense that it is unspecified in [input-output-hk/plutus](https://github.com/input-output-hk/plutus). There's no visible plan from IOG to extend the Haskell parser to support this syntax, though there are samples of imagined syntax in the code. Thus, we can lead the way and simply choose a suitable syntax and let the Haskell implementation align to it later.

  This syntax is thus inspired from input-output-hk/plutus' samples, with only a small change: we use `<` and `>` for encapsulating type declaration instead of `(`, `)`. There are already enough parentheses in the UPLC syntax, adding more reduces visibility.

  Doing this, I've also added a lot more test cases for the UPLC parser. There could be more, but this is a good start.

  Here are some example programs (taken from test cases) utilizing this syntax:

  ```
  (program 0.0.0 (con list<bytestring> [#00, #01]))
  ```

  ```
  (program 0.0.0
      (con pair
        <integer, integer>
        [14, 42]
      )
  )
  ```

  ```
  (program 0.0.0
      (con pair<string, list<integer>> ["foo", [14, 42]])
  )
  ```

  _(Note that this was mainly done as an exercise to get more familiar with Rust and parts of Aiken.)_
2022-12-03 10:16:16 -05:00
rvcas
5ec93a8692 feat: format bytearrays 2022-12-01 15:28:15 -05:00
rvcas
fedafed845 feat: add module constants 2022-12-01 15:28:15 -05:00
rvcas
34c8a58391 feat: complete language tour 2022-11-30 15:35:55 -05:00
rvcas
0823b78bf8 feat: some new features
- tuples `#(Int, Int)`
- `trace` and `trace("text")`
2022-11-28 22:33:53 -05:00
eyelash
6066e3176c move to_string() outside of the match 2022-11-28 17:30:45 -05:00
vh-zuka
269cf8c13f fix: update aiken new 2022-11-26 10:30:41 -05:00
rvcas
d5087dbcc7 fix: it's more consistent to have snakecase builtins 2022-11-24 18:36:22 -05:00
rvcas
67d160230b feat: new build command flag
- `uplc` to optionally dump raw uplc
2022-11-24 18:17:03 -05:00
Kasey White
1c3511b073 insert def should run after all sequences have run 2022-11-24 17:51:49 -05:00
Kasey White
6babebde28 feat: support self recursion functions and fix making constrs 2022-11-24 15:19:32 -05:00
rvcas
09e77e1918 feat: display named source 2022-11-24 11:38:43 -05:00
rvcas
ba8855add9 fix: implicit discard in list patterns 2022-11-24 10:06:54 -05:00
rvcas
27e0286d01 fix: most places should allow trailing comma 2022-11-23 21:09:06 -05:00
rvcas
c07b9a1a81 feat: allow assignments to be cast to other types 2022-11-23 21:09:06 -05:00
rvcas
34d7a28351 feat: add check keyword and new assignment syntax 2022-11-23 21:09:06 -05:00