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
Kasey White
6687b9fe4c
add forces to pair usage and fix clippy
2022-11-23 17:57:02 -05:00
Kasey White
dc510b1c7a
feat: finish list deconstruct
2022-11-23 17:57:02 -05:00
Kasey White
e6f6d8a42d
small edge case to fix and some ordering to go
2022-11-23 17:57:02 -05:00
rvcas
1de2640a48
feat: list patterns
2022-11-23 17:57:02 -05:00