Commit Graph

84 Commits

Author SHA1 Message Date
Christian Rinderknecht
072dea757c [WIP] Adding the infrastructure for supporting the incremental API of Menhir.
* I added CLI option "--mono" to select the monolithic API of Menhir.
  * I added a field "win" to the state of the lexer (a two-token
    window for error reporting).
  * I escaped LIGO strings before making them OCaml strings (for
    example for printing).
2019-12-20 16:44:03 +01:00
Christian Rinderknecht
c46bf008c8 Adding the build of the unlexer by dune. 2019-12-18 21:32:12 +01:00
Christian Rinderknecht
64f04b8c40 Fixed a tag file (local build of PascaLIGO with my Makefile). 2019-12-18 16:53:32 +01:00
Christian Rinderknecht
97a6d7162f Regression. 2019-12-18 15:50:42 +01:00
Christian Rinderknecht
c7bd986772 Merge remote-tracking branch 'origin/dev' into rinderknecht-dev 2019-12-18 14:22:57 +01:00
Christian Rinderknecht
078dd06132 Merge branch 'rinderknecht-dev' of gitlab.com:ligolang/ligo into rinderknecht-dev 2019-12-17 17:07:10 +01:00
Christian Rinderknecht
8210a4e186 Added basic support for Menhir's incremental API.
I added the token Bytes to ReasonLIGO's [LexToken.mll] for the build.
2019-12-17 17:03:43 +01:00
Christian Rinderknecht
757b0da78c Removed the open type [Error.t] (less [assert false]).
I also had to remove the keywords [Down], [Fail] and [Step] in
PascaLIGO that made a mysterious and unwanted come back. (I did not
bother with [git blame]).
2019-12-17 15:58:27 +00:00
Christian Rinderknecht
531dd238a7 Added unlexer for PascaLIGO. 2019-12-17 15:58:27 +00:00
Christian Rinderknecht
35d4b64a02 Removed the open type [Error.t] (less [assert false]).
I also had to remove the keywords [Down], [Fail] and [Step] in
PascaLIGO that made a mysterious and unwanted come back. (I did not
bother with [git blame]).
2019-12-17 14:56:16 +01:00
Sander Spies
52eff4e764 Incorrect function arguments message for ReasonLIGO. 2019-12-16 18:04:15 +01:00
Christian Rinderknecht
257ef4f5d2 Added unlexer for PascaLIGO. 2019-12-16 17:37:46 +01:00
Sander Spies
09875cf1da Make type_expr_simple less complicated. 2019-12-16 14:54:12 +01:00
Christian Rinderknecht
a94ee53fd3 Finished the refactoring of the parsers. 2019-12-15 20:59:04 +01:00
Christian Rinderknecht
f8d6396fcd Refactoring of the parsers
* [CameLIGO/ReasonLIGO] The AST node [EAnnot] (expressions
    annotated by a type) now records the region in the source
    code for the colon.

  * [CameLIGO/ReasonLIGO/PascaLIGO] I added the syntax
     %token <...> TOKEN "lexeme"

  * [ReasonLIGO] I changed the AST nodes [Mtz] and [Str] to
    [Mutez] and [String], respectively (in accordance with the
    PascaLIGO front-end). I changed token [DOTDOTDOT] to
    [ELLIPSIS].

  * [ReasonLIGO] I added what was missing to make a loca build
    with my Makefile.
2019-12-15 17:46:08 +01:00
Christian Rinderknecht
6692643cc5 Streamlined LexerMain and ParserMain for ReasonLIGO. 2019-12-13 17:28:15 +01:00
Christian Rinderknecht
c7ffa6d563 Merge remote-tracking branch 'origin/dev' into rinderknecht-dev 2019-12-13 12:28:33 +01:00
Christian Rinderknecht
0226b9f23c Refactoring of comments (for [dune build @doc]).
Refactoring of parsing command-line arguments

  * The type [options] is now abstract and implemented as an
    object type to avoid struggling with scoping and type
    inference when record types share some common field names.

Refactoring of ParserLog for PascaLIGO and CameLIGO

  * The immediate motivation behind that refactoring was to
    remove the use of a couple of global references. A
    consequence is that we have a nicer and more compact code, by
    threading a state. The files [pascaligo/Tests/pp.ligo] and
    [ligodity/Tests/pp.mligo].

  * Another consequence is that the choice of making strings from
    AST nodes depends on the CLI (offsets? mode?). After this
    refactoring, that choice is hardcoded in the simplifiers in a
    few places (TODO), waiting for a general solution that would
    have all CL options flow through the compiler.

  * I removed the use of vendors [x_option.ml], [x_map.ml] and
    [x_list.ml] when handling optional values. (Less dependencies
    this way.)

Refactoring of the ASTs

  * I removed the node [local_decl], which was set to [[]]
    already in a previous commit (which removed local
    declarations as being redundant, as statements could already
    be instructions or declarations).

  * I changed [StrLit] to [String] in the AST of CameLIGO and
    ReasonLIGO.

  * I also changed the type [fun_expr] so now either a block is
    present, and therefore followed by the [with] keyword, or it
    is not. (Before, the presence of a block was not enforced in
    the type with the presence of the keyword.)

Notes

  * [LexerMain.ml] and [ParserMain.ml] for CameLIGO and PascaLIGO
    are almost identical and differ in the same way (language
    name and file extension), which suggests that they should be
    in the [shared] folder and instanciated as a functor in the
    future (TODO).

  * I removed the blank characters at the end of many lines in
    the parser of ReasonLIGO.
2019-12-13 12:21:52 +01:00
Sander Spies
6f9134834f Remove original Cameligo and rename Ligodity to Cameligo. 2019-12-12 14:35:07 +01:00
Sander
95a7e19be6 Add ReasonLIGO support 2019-12-10 13:47:31 +00:00
Christian Rinderknecht
04a770e22d To enable local builds of the PascaLIGO parser. 2019-12-09 15:52:17 +00:00
John David Pressman
e1a05a27c5 Remove vestigial commented-out code 2019-11-18 23:45:26 -08:00
galfour
ddc4b7b7a5 add anon functions; remove pre-block declarations; update tests 2019-11-18 16:10:48 +01:00
galfour
d0efbd9f92 add and test more ways to do function application in pascaligo 2019-11-14 20:13:15 +01:00
Christian Rinderknecht
02f58ee212 I removed the annotation for the variable that iterates over collections.
for x in set s block { ... } // now
for x : t in set s block { ... } // before
2019-11-06 20:12:25 +01:00
Christian Rinderknecht
9da6d81a0f Added local test file. 2019-11-06 17:33:00 +01:00
Christian Rinderknecht
fe90246e3a Fixed the printing of some AST nodes. 2019-11-06 17:23:49 +01:00
Christian Rinderknecht
bd6ce2f28c Bug fix: Some nodes were not indented. 2019-11-05 15:57:43 +01:00
Christian Rinderknecht
351025b52d Refactoring of Ligodity (CameLIGO) and making an AST pretty-printer
- AST.ml/AST.mli:
  - The AST now distinguishes the constructors `None` and `Some` as being
    predefined, as in PascaLIGO. See type `AST.constr_pattern`.
  - I removed the nodes specific to Liquidity,
    e.g. `let%entry`, and, in particular, the natural literals
    ending with `p`. Now it should be `n`, as in `10n`.
  - I renamed the node `TAlias` to `TVar`.
  - I have applied the rule of expanding type expressions after `of` when
    those were not records.
  - The type of the argument to a data constructor is now
    `type_expr`, instead of `cartesian`.
  - I added the patterns for bytes (`PBytes`) and natural literals (`PNat`).
  - I renamed the node `Sugar` into
    `PListComp` (meaning "pattern of list comprehension").
  - Record types in CameLIGO now must have at least one field declaration.
  - Replaced the type `closing` and `opening` with one type `compound`,
    which captures only the right combinations of opening and closing.
  - Components of tuples in a selection must not be written
    between parentheses. For example, `a.b.(1).(0)` is now
    `a.b.1.0`, as in PascaLIGO.
- LexToken.mli/LexToken.mll
  - I renamed the string literal `Str` into `String`.
  - I added the tokens `C_None` and `C_Some` (to distinguish the
    constructors `None` and `Some`. See AST.ml)
  - Fixed the function `mk_sym` so it does not fail with `failwith`, but
    with `Error Invalid_symbol`.
- Lexer.mll (shared)
  - I removed the character `%` from the identifiers (used to
    support Liquidity, like `entry%point` and `match%nat`).
  - I adde to the hint on broken strings: "or insert a backslash"
    (from a Gitlab issue).
- ParToken.mly
  - I added the tokens `C_None` and `C_Some` (to distinguish the
    constructors `None` and `Some`. See AST.ml and LexToken.mll)
- Parser.mly
  - Fixed the order of declarations in the AST (it was reversed).
  - I removed syntax support for Liquidity.
  - I added user-defined constructor applications to irrefutable
    patterns (the ones afer a `let`), even though only the type
    checker can decide that they are truly irrefutable because they
    are the only constructors of their types.
  - I added natural numbers and bytes to patterns.
  - Access of tuple components do not require parentheses now, like
    `a.b.1.0`.
  - I refactored the semantic actions.
  - I added the empty sequence `begin end`.
- ParserLog.ml/ParserLog.mli
  - I added a pretty-printer for the AST (with source locations).
- ParserMain.ml
  - The CLI for the pretty-printer is now `--verbose=ast`.
  - The old CLI `--verbose=ast` is now `--verbose=ast-tokens`.
- ligodity.ml (simplifier)
  - I removed the constructions of sets, lists and maps with
    `Set [...]`, `List [...]` and `Map [...]`, as there are already
    better ways (that is, more like the OCaml's way), like
    `Set.literal [...]` and `Map.literal [...]`. (The case for lists
    was entirely redundant with the rest of the language as it is.)
  - Everywhere there is now a non-empty list of elements, I made a
    change. In particular, I removed a corner case ("let without
    binding"), thanks to more precise OCaml types for non-empty
    lists.
  - I ported all the changes to the AST above.
- region.ml (vendors)
  - I changed the method `compact` so the end-line is not repeated
    if it is the same as the start line: this is even more compact. I
    use this in the new pretty-printer for the AST (see above)
- I updated all the CameLIGO contracts.
2019-11-04 23:51:47 +01:00
Christian Rinderknecht
2c4183f008 Merge branch 'feature/cameligo-bitwise-operators' into 'dev'
[LIGO-177] Add bitwise operators to CameLIGO

See merge request ligolang/ligo!160
2019-10-28 18:13:54 +00:00
John David Pressman
c7e4f3f651 Remove lxor, land, and lor from reserved words 2019-10-28 09:18:16 -07:00
Tom Jack
0191d8b0ed Replace "mtz" with "mutez" 2019-10-27 11:50:24 -05:00
Rémi Lesenechal
5a5c3a8dd4 Merge branch 'feature/clean-big-map' into 'dev'
Feature/clean big map

See merge request ligolang/ligo!145
2019-10-25 21:30:09 +00:00
Christian Rinderknecht
4a9150f560 WIP: Fixing a regression (blocks in case clauses as intructions). 2019-10-24 10:33:22 +02:00
Christian Rinderknecht
eae3348d51 I forbade empty patches (parser). Fixed AST pretty-printer (PascaLIGO).
Changed accordingly the simplifier: the dead code for the error about
empty record patches is no long.
2019-10-23 00:35:29 +02:00
Lesenechal Remi
cefac0d8e7 add big_map injection 2019-10-22 12:23:48 +02:00
Christian Rinderknecht
9ad0859a4c Merge branch 'feature/pascaligo-remove-case-as-expression' into 'dev'
Feature/pascaligo add conditional as an expression

See merge request ligolang/ligo!144
2019-10-22 08:42:59 +00:00
Christian Rinderknecht
312dc65950 Merge remote-tracking branch 'origin/dev' into rinderknecht-dev 2019-10-21 21:42:52 +02:00
John David Pressman
09230df60a Remove kwd_expr 2019-10-19 10:55:39 -07:00
John David Pressman
daad15c57d Write blockless function test and make it pass 2019-10-19 10:46:24 -07:00
John David Pressman
6e0173a9a7 Fix type error when where blockfun types eat regions 2019-10-18 17:46:20 -07:00
Christian Rinderknecht
d95f345dbf First attempt at adding conditionals as expressions.
Warning: The simplifier is not done yet.
2019-10-18 17:44:10 +02:00
Christian Rinderknecht
704c744ace First attempt at adding conditionals as expressions.
Warning: The simplifier is not done yet.
2019-10-18 13:52:26 +02:00
John David Pressman
2bffba379d Remove anonymous records 2019-10-17 22:34:38 -07:00
John David Pressman
35a59a0867 Add parser tokens, guru meditation on why the AST types don't work 2019-10-17 21:33:45 -07:00
John David Pressman
8997155a57 Rough draft of single-expr function syntax 2019-10-17 20:50:41 -07:00
Christian Rinderknecht
36d9858e97 Removed sub-blocks from PascaLIGO. 2019-10-17 18:33:58 +02:00
Christian Rinderknecht
00016d09bb I removed the definition of procedures.
Note: This immediately removes some unsupported cases of the
simplifier, pertaining to the definition of procedures.
2019-10-16 15:39:08 +02:00
Christian Rinderknecht
1299ecac6b Merge remote-tracking branch 'origin/dev' into rinderknecht-dev 2019-10-16 12:00:40 +02:00
Christian Rinderknecht
157e24ff08 Fixed documentation.
There was an error in the syntax of tuple projection (no parentheses
are needed, in fact).

Another issue was a wrong Markdown layout for lists (my fault).
2019-10-16 11:50:31 +02:00