mirror of
https://github.com/ProvableHQ/leo.git
synced 2024-09-11 05:45:30 +03:00
Merge pull request #28215 from ProvableHQ/doc-annotation-lex-parse
Clarify ABNF vs. lexer/parser annotations.
This commit is contained in:
commit
14463e0098
@ -327,7 +327,7 @@ impl<N: Network> ParserContext<'_, N> {
|
|||||||
let span = start + identifier.span;
|
let span = start + identifier.span;
|
||||||
|
|
||||||
// TODO: Verify that this check is sound.
|
// TODO: Verify that this check is sound.
|
||||||
// Check that there is no whitespace in between the `@` symbol and identifier.
|
// Check that there is no whitespace or comments in between the `@` symbol and identifier.
|
||||||
match identifier.span.hi.0 - start.lo.0 > 1 + identifier.name.to_string().len() as u32 {
|
match identifier.span.hi.0 - start.lo.0 > 1 + identifier.name.to_string().len() as u32 {
|
||||||
true => Err(ParserError::space_in_annotation(span).into()),
|
true => Err(ParserError::space_in_annotation(span).into()),
|
||||||
false => Ok(Annotation { identifier, span, id: self.node_builder.next_id() }),
|
false => Ok(Annotation { identifier, span, id: self.node_builder.next_id() }),
|
||||||
|
@ -102,10 +102,18 @@ pub enum Token {
|
|||||||
Arrow,
|
Arrow,
|
||||||
BigArrow,
|
BigArrow,
|
||||||
Underscore,
|
Underscore,
|
||||||
At,
|
At, // @ is not a symbol token in the ABNF grammar (see explanation about annotations below)
|
||||||
// There is no symbol for `)group` here (unlike the ABNF grammar),
|
// There is no symbol for `)group` here (unlike the ABNF grammar),
|
||||||
// because we handle that differently in the lexer.
|
// because we handle that differently in the lexer.
|
||||||
|
|
||||||
|
// The ABNF grammar has annotations as tokens,
|
||||||
|
// defined as @ immediately followed by an identifier.
|
||||||
|
// Here instead we regard the @ sign alone as a token (see `At` above),
|
||||||
|
// and we lex it separately from the identifier that is supposed to follow it in an annotation.
|
||||||
|
// When parsing annotations, we check that there is no whitespace or comments
|
||||||
|
// between the @ and the identifier, thus eventually complying to the ABNF grammar.
|
||||||
|
// See the parse_annotation function.
|
||||||
|
|
||||||
// Type keywords
|
// Type keywords
|
||||||
Address,
|
Address,
|
||||||
Bool,
|
Bool,
|
||||||
|
Loading…
Reference in New Issue
Block a user