Commit Graph

123 Commits

Author SHA1 Message Date
Gastón Zanitti
91d41df9a0 Allow blocks to be empty (#1435)
This PR builds on top of #1393.
It mainly modifies the grammar by changing the way SelectedExpressions
are declared, to allow blocks to be empty.

---------

Co-authored-by: chriseth <chris@ethereum.org>
2024-07-01 15:05:32 +00:00
Leandro Pacheco
2b5a308484 Machine arguments (#1356)
Fixes #1493

Allow passing machines as argument when instantiating submachines, as
in:
```
use std::machines::binary::Binary;

machine Main with degree: 262144 {
    reg pc[@pc];
    reg X[<=];
    reg Y[<=];
    reg Z[<=];
    reg A;

    Binary binary;
    WithArg sub(binary);

    instr and X, Y -> Z ~ binary.and;
    instr or X, Y -> Z ~ binary.or;
    instr xor X, Y -> Z ~ binary.xor;
    ...
}

machine WithArg(bin: Binary) {
    reg pc[@pc];
    reg X[<=];
    reg Y[<=];
    reg Z[<=];
    reg A;
    reg B;

    instr and X, Y -> Z ~ bin.and;
    instr or X, Y -> Z ~ bin.or;
    instr xor X, Y -> Z ~ bin.xor;
    ...
}
```
2024-07-01 10:38:08 +00:00
Leandro Pacheco
abbe26618f Instructions with link statements (#1439)
Allow VM instructions to use the `link` notation, unifying the way
machines are linked from VMs and block machines.
Previous syntax for "external instructions" not allowed anymore, and
should use the new `link` syntax.
2024-06-18 17:31:38 +00:00
chriseth
970c567415 Add end to source ref (#1402) 2024-06-04 14:57:18 +00:00
chriseth
adee683796 Refactor error to use SourceRef (#1398) 2024-05-31 14:47:05 +00:00
chriseth
9ee58fe7d0 Store contents in SourceRef and change to offset instead of line/col. (#1396) 2024-05-28 15:33:38 +00:00
Gastón Zanitti
0d9669e26c SourceRef in expressions (#1357)
This PR solves issue https://github.com/powdr-labs/powdr/issues/1293.

Includes PRs that modify some Expression in order to match fields. It is
recommended to review/merge those first:
- #1351 
- #1352
- #1353
- #1354
- #1355


All comments are welcome :)

---------

Co-authored-by: chriseth <chris@ethereum.org>
2024-05-26 16:52:07 +00:00
Gastón Zanitti
0757e57e8d BlockExpression struct in Expressions (#1355)
This PR is part of issue https://github.com/powdr-labs/powdr/pull/1345.
In particular, it adds the struct BlockExpression to Expressions to
homogenize the structure before including source references.
2024-05-23 10:56:54 +00:00
Gastón Zanitti
c10ffb1fe1 MatchExpression struct in Expressions (#1354)
This PR is part of issue https://github.com/powdr-labs/powdr/pull/1345.
In particular, it adds the struct MatchExpression to Expressions to
homogenise the structure before including source references.
2024-05-22 18:10:56 +00:00
Gastón Zanitti
98da4955de UnaryExpression struct in Expressions (#1352)
This PR is part of issue https://github.com/powdr-labs/powdr/pull/1345.
In particular, it adds the struct UnaryOperation to Expressions to
homogenise the structure before including source references.
2024-05-22 08:48:29 +00:00
Gastón Zanitti
29b0ee6672 BinaryExpression struct in Expressions (#1351)
This PR is part of issue #1345.
In particular, it adds the struct BinaryOperation to Expressions to
homogenise the structure before including source references.

---------

Co-authored-by: Thibaut Schaeffer <schaeffer.thibaut@gmail.com>
2024-05-21 17:58:30 +00:00
Gastón Zanitti
3f2792f98f Number struct in Expressions (#1353)
This PR is part of issue https://github.com/powdr-labs/powdr/pull/1345.
In particular, it adds the struct Number to Expressions to homogenize
the structure before including source references.
2024-05-10 08:06:01 +00:00
Amin Latifi
9472671b9b Reduce Number of Expression Parentheses (#1289)
Adds binary operation precedence support to avoid unnecessary
parentheses in expression printed format

- #962

---------

Co-authored-by: chriseth <chris@ethereum.org>
2024-05-09 07:33:26 +00:00
chriseth
62c3eadc4c Re-enable non-inlined format args (#1362)
Fixes https://github.com/powdr-labs/powdr/issues/1360
2024-05-08 16:27:22 +00:00
chriseth
3e43e33796 Constr as user-defined enum (#1252)
Turns some of the built-in types into user types in the prelude.
2024-05-01 10:29:19 +00:00
Leandro Pacheco
930f24ac43 small improvements to machine properties handing (#1321)
- change lalrpop parsing errors to `String` to allow formatted msgs
- implement Display for MachineProperties and MachineArguments
2024-04-26 10:52:10 +00:00
Leandro Pacheco
cea207ff3f Machine properties using with syntax (#1267)
This implements issue #1251.
Basically `machine Foo(a,b) { ... }` is now `machine Foo with latch: a,
operation_id: b { ... }`
2024-04-25 16:02:01 +00:00
chriseth
3643af03dd Generic enums (#1222) 2024-04-18 12:30:03 +00:00
chriseth
b2e0beef36 Enum pattern (#1216) 2024-04-17 13:11:09 +00:00
chriseth
161f4d8181 Parse turbofish (#1219) 2024-04-04 16:31:11 +00:00
chriseth
3960f8c6e5 Make degree optional for namespace. (#1235) 2024-04-04 12:33:23 +00:00
chriseth
6096afb218 Patterns in let statements and function parameters (#1214)
Co-authored-by: Leo <leo@powdrlabs.com>
2024-04-03 18:39:19 +00:00
chriseth
4e5c464df4 Flexible array pattern (#1208)
Depends on #1205 

Will document in https://github.com/powdr-labs/powdr/pull/1214
2024-04-03 11:48:07 +00:00
chriseth
f46d59dfe1 Basic version of patterns. (#1205)
Depends on #1187 

Implements part of https://github.com/powdr-labs/powdr/issues/982

Will document in https://github.com/powdr-labs/powdr/pull/1214
2024-04-03 09:30:42 +00:00
chriseth
28f0bb9c1d Statements in blocks and function annotations (#1187)
Adds statements at block level and introduces function kinds to be
either pure, constr or query.

closes https://github.com/powdr-labs/powdr/issues/960

---------

Co-authored-by: Leo <leo@powdrlabs.com>
2024-04-02 08:23:39 +00:00
chriseth
f91350e9da Support the empty tuple. (#1213) 2024-04-01 17:22:23 +00:00
chriseth
f42ca35f83 Let statements in expressions. (#1138)
Allows braced blocks everywhere where expressions are expected.
The statements in those blocks can be `let x` or `let x = ...`.
The former declares a new witness column, the latter just binds a local
variable.

fixes #959
2024-03-25 21:08:45 +00:00
schaeff
8065794633 allow expression in degree statement 2024-03-22 19:20:29 +01:00
chriseth
3bc1ec0f90 Wrap match. 2024-03-21 16:27:13 +01:00
Georg Wiese
80fafbe19c Spell-check 2024-03-20 16:12:55 +01:00
chriseth
ae8f8654b1 Merge pull request #1118 from powdr-labs/challenges
Challenges
2024-03-20 12:07:06 +00:00
chriseth
e1753fd88e Challenges and stages. 2024-03-20 12:40:51 +01:00
Leandro Pacheco
edaf536500 Allow machines to be linked via permutation
by instructions and links using `~` instead of `=`.
Block machines must declare `call_selectors`.
2024-03-20 08:17:21 -03:00
Leo Alt
efe11f40fc enum declarations 2024-03-18 22:09:44 +01:00
Leandro Pacheco
ff8fda1563 Expressions in instr/link params
allow for `link` and RHS of `instr` params to use full on expressions
2024-03-18 14:04:08 -03:00
chriseth
9366badcac Rename format type name and remove Custom. 2024-03-12 11:16:02 +01:00
Leo
2db12b2374 Merge pull request #1149 from powdr-labs/parse_semicolons_as_part_of_statements
Parse semicolons as part of statements.
2024-03-11 17:29:34 +00:00
chriseth
dc05b9c56e Use only one type type. 2024-03-11 18:01:40 +01:00
chriseth
ab7e4e9a3b Parse semicolons as part of statements. 2024-03-11 17:49:15 +01:00
chriseth
349f9aa461 Parse numbers as integers. 2024-03-08 15:48:49 +01:00
chriseth
4024698b2a Use ibig crate. 2024-03-08 07:31:27 +01:00
chriseth
ba64512321 Rename AbstractNumberType to BigUint. 2024-03-05 15:24:21 +01:00
Leo
88c9d735b7 Merge pull request #1070 from powdr-labs/link_params
Move `link` params to RHS
2024-03-04 13:40:25 +00:00
Leandro Pacheco
f3e1802787 move link params to RHS and simplify the code
- added more checks for pc machines / constrained machines
- improve example and docs
2024-03-04 09:55:37 -03:00
chriseth
97ed14c48b Type checking. 2024-03-01 17:36:54 +01:00
chriseth
daffb65c0c Add type schemes. 2024-02-22 13:39:39 +01:00
Leandro Pacheco
2e1a8571a7 instr param mapping
allow RHS of `instr` declarations to control the usage of write and assignment
registers.
2024-02-14 13:31:19 -03:00
chriseth
8f6cd49969 Introduce identity operator. 2024-02-07 16:04:55 +01:00
chriseth
97007261d0 Clippy fixes. 2024-02-07 08:25:28 +01:00
Leandro Pacheco
36c3a78fe7 move LinkDeclaration SourceRef to enum (like other variants) 2024-02-06 10:13:11 -03:00