Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite grammar and parser #434

Merged
merged 1 commit into from
May 13, 2020
Merged

Rewrite grammar and parser #434

merged 1 commit into from
May 13, 2020

Conversation

mtdowling
Copy link
Member

This commit is a complete rewrite of the Smithy IDL parser and grammar.
It is intended to clear up the intention of how the IDL works in
practice by making the grammar embed things like how control statements
come before metadata, which come before namespace, etc.. It also
clarifies how different node_value locations have different semantics
(e.g., keys in objects are not resolved against keywords like
true and do not perform relative shape ID resolution nor do they support
text blocks). Many other fixes have been made to the grammar too,
including specifying where whitespace is allowed and where line breaks
are required. This makes the grammar more verbose but also more accurate
and in line with what was already implemented.

With these changes, control statement keyus, metadata keys, and object keys
must now be quoted if they contain ".", "#", or "$". In practice, the
model parser already enforced these constraints in some places.

Issue #, if available:

Description of changes:

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@mtdowling mtdowling requested a review from kstich May 12, 2020 17:28
Copy link
Contributor

@JordonPhillips JordonPhillips left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IDL changes mostly look good

docs/source/1.0/spec/core/lexical-structure.rst Outdated Show resolved Hide resolved
docs/source/1.0/spec/core/traits.rst Show resolved Hide resolved
@mtdowling mtdowling requested a review from JordonPhillips May 12, 2020 20:23
@mtdowling mtdowling force-pushed the rewrite-grammar-and-parser branch from 6533f90 to 2752061 Compare May 12, 2020 23:51
@mtdowling mtdowling requested a review from kstich May 12, 2020 23:51
@mtdowling mtdowling force-pushed the rewrite-grammar-and-parser branch 2 times, most recently from e6836f8 to bec25c8 Compare May 13, 2020 00:03
This commit is a complete rewrite of the Smithy IDL parser and grammar.
It is intended to clear up the intention of how the IDL works in
practice by making the grammar embed things like how control statements
come before metadata, which come before namespace, etc.. It also
clarifies how different node_value locations have different semantics
(e.g., keys in objects are not resolved against keywords like
true and do not perform relative shape ID resolution nor do they support
text blocks). Many other fixes have been made to the grammar too,
including specifying where whitespace is allowed and where line breaks
are required. This makes the grammar more verbose but also more accurate
and in line with what was already implemented.

With these changes, control statement keyus, metadata keys, and object keys
must now be quoted if they contain ".", "#", or "$". In practice, the
model parser already enforced these constraints in some places.
@mtdowling mtdowling force-pushed the rewrite-grammar-and-parser branch from bec25c8 to 1e2a417 Compare May 13, 2020 17:39
@mtdowling mtdowling merged commit 6140d45 into master May 13, 2020
@kstich kstich mentioned this pull request May 13, 2020
@mtdowling mtdowling deleted the rewrite-grammar-and-parser branch May 14, 2020 22:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants