Commit Graph

180 Commits

Author SHA1 Message Date
Alessandro Coglio
d08a4f814a [ABNF] Remove expression statements.
Since we do not have tuple in this version of Leo, we cannot have expression
statements, because normally expressions used as statements would have to return
the empty tuple, since we disallow throwing away values in Leo.
2022-03-29 21:20:26 -07:00
Alessandro Coglio
e3f87ad322 [ABNF] Remove some stray documentation comments.
Documentation comments were all removed from this grammar file, as readers of
this file in this branch are already familiar with Leo.
2022-03-21 17:49:38 -07:00
Alessandro Coglio
7b13ba58e4 [ABNF] Re-classify function call expressions.
This mirrors, in pre-testnet3, the change in PR #1699 in testnet3.

Since in pre-testnet3 we have fewer kinds expressions, the category of postfix
expressions disappears altogether with this re-classification.
2022-03-21 17:41:41 -07:00
collin
d388b74b7f pull latest testnet3 2022-03-21 13:49:16 -07:00
Alessandro Coglio
b1eae61527 [ABNF] Improve some rule names.
This does not change the language. It only renames two related rule names:

function-input => named-parameter
function-inputs => named-parameters

According to the new nomenclature, there are function parameters, which are self
parameters and named parameters: the nomenclature is clear and "symmetric".

The problem with the previous nomenclature is that both self and named
parameters are inputs, not just the named ones.
2022-03-19 21:19:19 -07:00
Alessandro Coglio
7d39937330 [ABNF] Fix typo found by @bendyarm. 2022-03-18 22:30:48 -07:00
Alessandro Coglio
1719e3d598 [ABNF] Add two extra-grammatical requirements.
These are needed to make parsing unambiguous. They require the test of a
conditional statement and the ending bound of a loop statement to not be or
start with a circuit expression.
2022-03-18 17:41:56 -07:00
Eric McCarthy
227b887a71 [ABNF] add parens in group-coordinate for readability; fix indentation of format-string-element to make consistent with other indentation 2022-03-16 22:42:30 -07:00
Alessandro Coglio
5c1efa81f7 [ABNF] Grammar for pre-testnet3 version.
This is obtained by removing features from the grammar currently in the testnet3
branch.

The documentation comments have been removed to keep the file smaller and
simpler to read, as readers of this file should be already familiar with Leo.
Furthermore, that documentation material is being moved to the Leo Language
Reference.

This commit also folds the format string grammar (for console print strings)
into (a separate section of) the same file, again for simplicity. The previous
separate small file (and generated markdown) for format strings has thus been
removed.
2022-03-16 21:39:17 -07:00
Alessandro Coglio
729dbaceec [ABNF] Allow trailing commas everywhere.
Also disallow 1-tuple array dimensions.
2022-03-16 20:40:06 -07:00
Collin Chin
07d03b0ff1
Merge pull request #1684 from AleoHQ/abnf-numeral-is-token
[ABNF] Add numerals to tokens.
2022-03-15 14:50:56 -07:00
Collin Chin
f886890e2b
Merge pull request #1679 from AleoHQ/abnf-doc-fix-b
[ABNF] Update some documentation
2022-03-15 10:22:54 -07:00
Alessandro Coglio
efffcc98dc [ABNF] Add numerals to tokens.
Given that arithmetic literals are now all typed in the grammar, we need
numerals to be listed as tokens. Otherwise, array dimensions and tuple indices
would not be tokens, but they must be.
2022-03-14 22:05:42 -07:00
Eric McCarthy
572d59d67f [ABNF] regenerate README.md 2022-03-14 12:35:56 -07:00
Eric McCarthy
ffa8200d92 [ABNF] update some documentation 2022-03-14 12:29:19 -07:00
Alessandro Coglio
3f6b17646c [ABNF] Add a clarification to the documentation.
No grammar change in this commit.
2022-03-10 15:31:31 -08:00
Alessandro Coglio
ca3ae89a3e [ABNF] Rename 'natural' to 'numeral'.
This applies both to the rule name and to the terminology used for that, namely
for a non-empty sequence of decimal digits.

While 'natural' was meant to describe a natural number (i.e. a non-negative
integer: 0, 1, 2, ...), it is perhaps not a familiar term to many users.

On the other hand, 'integer', while often used in programming languages for this
kind of thing, is not ideal as integers may be negative.

Also, assuming type inference, a lone numeral like `17` may actually not denote
an integer number at all, because it may actually denote a group element if type
inference turns it into `17group`, and group elements are not integers.

All in all, 'numeral' seems like a good term, also according to its dictionary
definition. It is used in the Java grammar to denote this kind of thing, for
instance.

If, in the future, we want to allow hexadecimal, octal, or binary notation, we
could rename this to `decimal-numeral`, introduce `hexadecimal-numeral`,
`octal-numeral`, and `binary-numeral`, and `numeral` as the union of these.
2022-03-10 15:23:58 -08:00
Collin Chin
4dd70474f5
Merge pull request #1669 from AleoHQ/abnf-integer-fix
[ABNF] Fix use of integers in literals.
2022-03-10 12:02:10 -08:00
Alessandro Coglio
f735ca8864 [ABNF] Update some documentation.
This does not change the grammar. It merely updates some text in the comments,
which shows a rule that was changed at some point but its copy in the comments
was not properly updated.

Thanks to @bendyarm for noticing this.
2022-03-08 23:23:38 -08:00
Alessandro Coglio
7e930d8670 [ABNF] Fix use of integers in literals.
This removes the rule for `integer` and uses `natural` for all numeric literals.

Otherwise, lexing would be context-dependent for no good reason.

This is consistent with the lexer and parser of the Leo compiler.

Note that, for instance, `-1field` is not a literal, but rather a unary
expression where `-` is applied to the literal `1field`. This is consistent with
other languages too.
2022-03-08 21:08:59 -08:00
Collin Chin
5e2ba78750
Merge pull request #1656 from AleoHQ/remove/unsized-array
Remove/unsized array
2022-03-07 17:14:03 -08:00
Alessandro Coglio
6cbf206f86 [ABNF] Require types to avoid type inference.
Types are now required in variable and constant declarations (including for loop
variables), and for literals (i.e. there are no longer untyped literals).
2022-03-05 23:52:34 -08:00
Alessandro Coglio
6aca970b88 [ABNF] Re-generate markdown.
(Forgot to do this in the previous commit.)
2022-03-04 19:51:14 -08:00
Alessandro Coglio
c30df925ef [ABNF] Adapt ABNF to removal of unsized arrays.
This "merges" the two previous slightly different notions of array type
dimensions and array expression dimension(s) into one notion of array
dimensions, in which the dimensions have to be natural numbers. (Previously,
array type dimensions were allowed to be unspecified (via underscores), while
array expression dimensions had to be specified.)
2022-03-04 19:42:42 -08:00
collin
10bea676a8 remove unsized arrays 2022-03-04 12:23:46 -08:00
collin
22f605349c merge testnet3 2022-02-28 09:42:37 -08:00
collin
e263e64279 restructure compiler and delete unused code 2022-02-22 15:12:52 -08:00
Alessandro Coglio
7f9b6b09da
Merge pull request #1414 from AleoHQ/rfc/static-circuit-members
[RFC] Add a way to define static members to circuits to accesses RFC
2021-10-27 21:46:34 -07:00
gluaxspeed
870dfe8a9d fix typo 2021-10-26 09:09:47 -07:00
Alessandro Coglio
582dfed17d [RFC] Make change suggested by Damir. 2021-10-25 21:23:06 -07:00
gluaxspeed
8600c13dd3 make agreed upon changes 2021-10-25 06:43:09 -07:00
Alessandro Coglio
ae26d4c7d4 [RFC] Add an RFC for const functions.
The purpose of this RFC is to:
- Provide user documentation for this feature in a more accessible way than
  in the text for https://github.com/AleoHQ/leo/pull/1410, particularly after
  that PR is closed.
- Record the discussion in a recent meeting about broadening the notion of const
  function to map const arguments to const results rather than requiring const
  arguments, as a possible future extension.
2021-10-24 22:19:33 -07:00
gluaxspeed
a34f36b9c1 add example for static constant 2021-10-21 11:31:40 -07:00
gluaxspeed
5654e8a7a6 add a way to define static members to circuits to accesses rfc 2021-10-21 11:27:02 -07:00
Alessandro Coglio
6e3900dfa2
Merge pull request #1380 from AleoHQ/rfc-import
[RFC] Some minor edits and some additions to the imports RFC
2021-10-07 09:12:16 -07:00
Alessandro Coglio
f3a1352ec2 [RFC] Minor edits to the text. 2021-10-05 21:01:47 -07:00
Alessandro Coglio
aa29ce30d4 [RFC] Move some text to explicit background section.
According to new template, background is at the same level as (and before)
design.
2021-10-05 20:54:59 -07:00
Alessandro Coglio
7d4198fe43 [RFC] Change some headling levels.
In accordance with new template.
2021-10-05 20:53:20 -07:00
Alessandro Coglio
93210e7879 [RFC] Revise the background on pacakges and imports.
Starting to establish precise nomenclature and definitions for these Leo
concepts.
2021-10-04 19:04:11 -07:00
Alessandro Coglio
bc9658b972 [RFC] Improve some wording. 2021-10-04 18:51:48 -07:00
Alessandro Coglio
ebc213342b
Merge pull request #1377 from AleoHQ/rfc-recursion
[RFC] Clarify bounded recursion RFC
2021-10-01 20:06:07 -07:00
Alessandro Coglio
5b77e1e283 [RFC] Add a background section. 2021-10-01 10:58:45 -07:00
Alessandro Coglio
b37de11116 [RFC] Minor edits (just form, no change of substance). 2021-10-01 10:46:06 -07:00
Alessandro Coglio
8d26cc5676 [RFC] Adjust heading levels according to new template. 2021-10-01 10:38:16 -07:00
Alessandro Coglio
d134548d0e
Merge pull request #1373 from AleoHQ/rfc-strings
[RFC] Clarify structure of character/string RFC
2021-09-30 22:13:53 -07:00
Alessandro Coglio
b91864828f
Merge pull request #1372 from AleoHQ/rfc-template
[RFC] Extend template.
2021-09-30 22:13:19 -07:00
Alessandro Coglio
a5de1d6ee3
Merge pull request #1368 from AleoHQ/rfc-rec-trans
[RFC] Updates to record/transaction model
2021-09-30 22:12:53 -07:00
Alessandro Coglio
aca438aaba [RFC] Move some text under future extensions. 2021-09-30 10:15:15 -07:00
Alessandro Coglio
8b39f54165 [RFC] Move inlining examples to background section. 2021-09-30 10:10:23 -07:00
Alessandro Coglio
d633f93f6f [RFC] Use header levels consistent with (new) template. 2021-09-30 09:55:52 -07:00