Commit Graph

1586 Commits

Author SHA1 Message Date
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
rvcas
4129cf92c9 chore: commit assets 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
rvcas
2d5ed86a68 chore: some requested changes to comparsisons 2022-11-27 15:25:55 -05:00
Micah Kendall
919eebbd97 check clarification from rvcus 2022-11-26 10:33:06 -05:00
Micah Kendall
9b027f0051 Assert 2022-11-26 10:33:06 -05:00
Micah Kendall
58ee2c39a6 Check 2022-11-26 10:33:06 -05:00
Micah Kendall
45edc3e622 Tuples 2022-11-26 10:33:06 -05:00
Micah Kendall
be4e489380 Type-aliases explanation 2022-11-26 10:33:06 -05:00
Micah Kendall
568192cc52 String explanations 2022-11-26 10:33:06 -05:00
Micah Kendall
8279c592df fix typo 2022-11-26 10:33:06 -05:00
Micah Kendall
f8b967b5f1 Todo explanation with example 2022-11-26 10:33:06 -05:00
Micah Kendall
3fab7cde69 case->whereif 2 2022-11-26 10:33:06 -05:00
Micah Kendall
a1a0465a3d +lines, -lines, +best practice avoid access by index 2022-11-26 10:33:06 -05:00
Micah Kendall
2ed0b1ed14 +overflow in ints 2022-11-26 10:33:06 -05:00
Micah Kendall
2479b94b67 More boolean examples, similar to gleam book. Also, explain correspondence to plutus primitives. 2022-11-26 10:33:06 -05:00
Micah Kendall
9b3c8e432e case->where-if in blocks.md 2022-11-26 10:33:06 -05:00
Micah Kendall
6eca7fc6ab added matching example, made block example about blocks returning values, not all blocks 2022-11-26 10:33:06 -05:00
vh-zuka
269cf8c13f fix: update aiken new 2022-11-26 10:30:41 -05:00