Christian Rinderknecht
589b62a30c
Extended map expression to map constants by extension.
...
Fixed the grammar for variable declarations (the ":=" had been
disabled by mistake in the last commit).
2019-03-20 11:24:27 +01:00
Christian Rinderknecht
0768f0c27d
Ported to constant declaration the work done for variable declarations.
...
That is to say, now constants can include unannotated empty lists etc.
2019-03-20 10:06:33 +01:00
Christian Rinderknecht
563bc59285
Added qualified names to patches ("patch x.y.z with ...").
...
Fixed grammar for map patches (should start with "patch", not "map").
2019-03-20 09:45:32 +01:00
Christian Rinderknecht
60c23850bd
Small refactoring of the AST.
2019-03-20 09:26:24 +01:00
Christian Rinderknecht
8eaf1a90ec
Maps can be defined by extension in declarations.
...
"map" has become a keyword to introduce definition of maps by extension in declarations ("map" ... "end"). This entails that a grammar rule had to be created to handle the type expressions "map (..., ...)". Concordantly, I added map patches, modelled after record patches.
I created a node in the AST for map expressions (currently only
map look-ups).
I refactored the parser with parametric rules.
2019-03-20 09:11:19 +01:00
Christian Rinderknecht
4c9a743411
Replaced expression "copy ... with ..." by instruction "patch ... with".
2019-03-19 14:32:43 +01:00
Christian Rinderknecht
c3b304db4a
I relaxed the extension to the grammar that enabled non-annotated
...
empty lists and None values as initial values in declarations.
Now, these values are accepted irrespective of the declared type. It
is up to the typechecker to validate them.
2019-03-19 11:54:23 +01:00
Christian Rinderknecht
d994592a1b
Changed "match ... with ..." to "case ... of ..."
2019-03-19 11:46:30 +01:00
Christian Rinderknecht
6c5ae52db6
I relaxed the grammar to support in the parser for initial values of
...
variables to not require type annotation, like
var x : list (operation) := []
2019-03-19 10:52:47 +01:00
Christian Rinderknecht
46d6df2146
Changed "do nothing" to "skip".
2019-03-18 18:09:15 +01:00
Christian Rinderknecht
623683839f
Removed keyword "null", replaced by two keywords "do"
...
and "nothing".
Until now only products of type names were allowed: I extended
them to allow type expressions.
Removed the destructive update of a map binding "a[b] := c".
Record projection has been extended to allow for qualified
names: "a.b.c" and "a.b.c[d]".
Changed the LIGO extension from ".li" to ".ligo".
Fixed the name of the language to be "LIGO" (instead of "Ligo").
2019-03-18 17:47:11 +01:00
Christian Rinderknecht
bbb5966132
Merge branch 'master' into AST_with_records
2019-03-15 08:45:00 +01:00
Georges Dupéron
acf1706d3d
more typechecker structure
2019-03-14 22:42:40 +01:00
Georges Dupéron
63be1b9b7d
More of the type annotator structure
2019-03-14 22:11:27 +01:00
Georges Dupéron
bac4ce1024
More type annotator skeleton
2019-03-14 21:14:05 +01:00
Georges Dupéron
0943408463
SMap.t for records and sums
2019-03-14 20:42:41 +01:00
Georges Dupéron
8830f598df
skeleton for a_types
2019-03-14 20:09:06 +01:00
Georges Dupéron
fb97b056ca
Started structure for the type annotator
2019-03-14 20:00:01 +01:00
Georges Dupéron
7a84cf1c8b
Removed If (missing in previous commit)
2019-03-14 19:32:36 +01:00
Georges Dupéron
8fc1729f47
If simplified to match
2019-03-14 19:30:55 +01:00
Georges Dupéron
adec2bb5e0
Cleanup
2019-03-14 19:23:37 +01:00
Georges Dupéron
689673ccfa
Single variable for ForCollect, set k=>v aside for now.
2019-03-14 19:14:10 +01:00
Georges Dupéron
90e894f9f4
Add missing regions
2019-03-14 19:02:41 +01:00
Georges Dupéron
76d4e1bb87
Distinguish function application from constructor application
2019-03-14 18:54:36 +01:00
Georges Dupéron
3bf5ad2819
Reformatted constant in AST2 to match that of Typecheck2
2019-03-14 18:45:38 +01:00
Georges Dupéron
ea0198388e
Humour (bis)
2019-03-14 18:45:22 +01:00
Georges Dupéron
8200bff783
Temporary `TODO in place of regions
2019-03-14 18:42:21 +01:00
Georges Dupéron
51ee2cd63f
Added stub (failwith) for type annotator
2019-03-14 18:31:59 +01:00
Georges Dupéron
9b6d93b343
Replace tuples with records
2019-03-14 18:26:36 +01:00
Georges Dupéron
5628e370b5
Indentation to match Typecheck2.mli
2019-03-14 18:26:25 +01:00
Georges Dupéron
cbb08f4405
Humour.
2019-03-14 18:19:51 +01:00
Christian Rinderknecht
ea02e4cffe
Added keyword "storage" as parameter kind (with "var" and "const") for
...
entrypoints.
2019-03-14 18:17:19 +01:00
Georges Dupéron
9db37fbdc4
operations_decl is now disallowed
2019-03-14 18:05:57 +01:00
Georges Dupéron
03671802eb
DropUnit is now ProcedureCall
2019-03-14 18:05:24 +01:00
Georges Dupéron
fbf6e5d89f
Cleanup
2019-03-14 18:05:07 +01:00
Georges Dupéron
e1ad18cd3e
Merged tuples and records so that x.4 is valid in principle
2019-03-14 17:58:14 +01:00
Georges Dupéron
9c5d31eca1
Merged tuples and records so that x.4 is valid in principle
2019-03-14 16:46:18 +01:00
Georges Dupéron
332f18bb80
Single argument for lambdas
2019-03-14 16:15:42 +01:00
Christian Rinderknecht
36e43a807e
Added library option -I.
2019-03-14 14:27:00 +01:00
Christian Rinderknecht
5f129d924a
Removed storage and operations declarations: entry-points now take the
...
former and return the latter.
2019-03-14 14:04:20 +01:00
Christian Rinderknecht
8e294a013c
Added assignment of a value to a map binding: m.[i] := v.
2019-03-14 13:19:52 +01:00
Georges Dupéron
8a11fc71eb
Removed non-applied type_constructor, single parameter for lambda expression.
2019-03-14 12:30:51 +01:00
Georges Dupéron
1db0f7c1fe
Wrong nesting of key and expr in records
2019-03-14 11:59:14 +01:00
Georges Dupéron
97db2a431c
type_expr vs. type_expr_case (put the regions and names in more places) in Typecheck2.mli
2019-03-14 11:50:18 +01:00
Georges Dupéron
87386c2500
type_constructor in AST2.ml
2019-03-14 11:49:42 +01:00
Georges Dupéron
2c0b6b518c
Simplified Prod → Record in types, added region to field names.
2019-03-14 11:19:15 +01:00
Georges Dupéron
96fb7c7ea2
Updated the typed AST interface after discussion with gabriel.alfour
2019-03-14 10:58:15 +01:00
Christian Rinderknecht
41f664f197
Removed AST2 and Typecheck2 before the merge back to master.
2019-03-14 10:07:11 +01:00
Christian Rinderknecht
c0e6843240
I added record creation (injection), field selection (projection)
...
and functional update (copy).
The only creative piece of concrete syntax is that of the
expression for functional updates:
copy foo with record field = value end
where "copy", "with", "record" and "end" are keywords.
2019-03-14 09:59:26 +01:00
Georges Dupéron
df4f49111b
Added regions to type_expr. The regions picked are fairly imprecise.
2019-03-14 09:37:10 +01:00