From 893a63196c5dc997abc60bb9b2c3f5dbce2a164b Mon Sep 17 00:00:00 2001 From: Omar Tawfik <15987992+OmarTawfik@users.noreply.github.com> Date: Tue, 31 Dec 2024 02:32:54 -0800 Subject: [PATCH] add generated `language-definition.json` (#1206) cc @AntonyBlakey --- Cargo.lock | 1 + .../parse_input_tokens/external_types.rs | 5 +- .../definition/src/model/built_ins.rs | 14 + .../language/definition/src/model/manifest.rs | 3 +- .../src/model/nonterminals/enum_.rs | 2 + .../src/model/nonterminals/field.rs | 6 + .../src/model/nonterminals/precedence.rs | 5 + .../src/model/nonterminals/repeated.rs | 2 + .../src/model/nonterminals/separated.rs | 2 + .../src/model/nonterminals/struct_.rs | 3 + .../src/model/terminals/fragment.rs | 1 + .../definition/src/model/terminals/keyword.rs | 6 +- .../definition/src/model/terminals/token.rs | 1 + .../language/tests/src/pass/tiny_language.rs | 8 +- .../runtime/generator/src/bindings/mod.rs | 6 +- crates/codegen/spec/Cargo.toml | 1 + .../codegen/spec/src/generators/topic_page.rs | 2 +- crates/codegen/spec/src/lib.rs | 9 +- .../spec/generated/language-definition.json | 9864 +++++++++++++++++ 19 files changed, 9926 insertions(+), 15 deletions(-) create mode 100644 crates/solidity/outputs/spec/generated/language-definition.json diff --git a/Cargo.lock b/Cargo.lock index a5a2c96c1c..f0414f1d46 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -517,6 +517,7 @@ dependencies = [ "infra_utils", "itertools 0.13.0", "serde", + "serde_json", ] [[package]] diff --git a/crates/codegen/language/definition/src/internals/parse_input_tokens/external_types.rs b/crates/codegen/language/definition/src/internals/parse_input_tokens/external_types.rs index 6f9a17d844..5d6035ca6e 100644 --- a/crates/codegen/language/definition/src/internals/parse_input_tokens/external_types.rs +++ b/crates/codegen/language/definition/src/internals/parse_input_tokens/external_types.rs @@ -1,9 +1,8 @@ use std::fmt::Debug; -use std::path::{Path, PathBuf}; +use std::path::PathBuf; use std::rc::Rc; use indexmap::{IndexMap, IndexSet}; -use infra_utils::paths::PathExtensions; use proc_macro2::Ident; use semver::Version; use syn::parse::ParseStream; @@ -100,7 +99,7 @@ impl ParseInputTokens for PathBuf { fn parse_value(input: ParseStream<'_>, errors: &mut ErrorsCollection) -> Result { let value = String::parse_value(input, errors)?; - Ok(Path::repo_path(value)) + Ok(PathBuf::from(value)) } } diff --git a/crates/codegen/language/definition/src/model/built_ins.rs b/crates/codegen/language/definition/src/model/built_ins.rs index 741b88b390..6982161b1a 100644 --- a/crates/codegen/language/definition/src/model/built_ins.rs +++ b/crates/codegen/language/definition/src/model/built_ins.rs @@ -18,8 +18,14 @@ pub enum BuiltIn { #[derive_spanned_type(Clone, Debug, ParseInputTokens, WriteOutputTokens)] pub struct BuiltInFunction { pub name: String, + + #[serde(skip_serializing_if = "Vec::is_empty")] pub parameters: Vec, + + #[serde(skip_serializing_if = "Option::is_none")] pub return_type: Option, + + #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, } @@ -27,8 +33,14 @@ pub struct BuiltInFunction { #[derive_spanned_type(Clone, Debug, ParseInputTokens, WriteOutputTokens)] pub struct BuiltInType { pub name: String, + + #[serde(skip_serializing_if = "Vec::is_empty")] pub fields: Vec, + + #[serde(skip_serializing_if = "Vec::is_empty")] pub functions: Vec, + + #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, } @@ -36,5 +48,7 @@ pub struct BuiltInType { #[derive_spanned_type(Clone, Debug, ParseInputTokens, WriteOutputTokens)] pub struct BuiltInField { pub definition: String, + + #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, } diff --git a/crates/codegen/language/definition/src/model/manifest.rs b/crates/codegen/language/definition/src/model/manifest.rs index cfe1ef7c82..2f19c3fb17 100644 --- a/crates/codegen/language/definition/src/model/manifest.rs +++ b/crates/codegen/language/definition/src/model/manifest.rs @@ -167,7 +167,8 @@ impl Section { #[derive_spanned_type(Clone, Debug, ParseInputTokens, WriteOutputTokens)] pub struct Topic { pub title: String, - pub notes_file: Option, + + #[serde(skip_serializing_if = "Option::is_none")] pub lexical_context: Option, pub items: Vec, diff --git a/crates/codegen/language/definition/src/model/nonterminals/enum_.rs b/crates/codegen/language/definition/src/model/nonterminals/enum_.rs index 28a0c64e9b..02654bf9f0 100644 --- a/crates/codegen/language/definition/src/model/nonterminals/enum_.rs +++ b/crates/codegen/language/definition/src/model/nonterminals/enum_.rs @@ -8,6 +8,7 @@ use crate::model::{Identifier, VersionSpecifier}; pub struct EnumItem { pub name: Identifier, + #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, pub variants: Vec, @@ -18,5 +19,6 @@ pub struct EnumItem { pub struct EnumVariant { pub reference: Identifier, + #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, } diff --git a/crates/codegen/language/definition/src/model/nonterminals/field.rs b/crates/codegen/language/definition/src/model/nonterminals/field.rs index acb05bfc38..e7abe74b7c 100644 --- a/crates/codegen/language/definition/src/model/nonterminals/field.rs +++ b/crates/codegen/language/definition/src/model/nonterminals/field.rs @@ -6,7 +6,10 @@ use crate::model::{Identifier, VersionSpecifier}; #[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] #[derive_spanned_type(Clone, Debug, ParseInputTokens, WriteOutputTokens)] pub struct FieldsErrorRecovery { + #[serde(skip_serializing_if = "Option::is_none")] pub terminator: Option, + + #[serde(skip_serializing_if = "Option::is_none")] pub delimiters: Option, } @@ -15,12 +18,14 @@ pub struct FieldsErrorRecovery { pub struct FieldDelimiters { pub open: Identifier, pub close: Identifier, + /// How many tokens have to be matched to trigger the error recovery. /// For ambiguous syntaxes this needs to be set to at least N, where N /// is the token lookahead required to disambiguate the syntax. /// /// By default, we assume no lookahead (0) is required to recover from /// unrecognized body between delimiters, so it's always triggered. + #[serde(skip_serializing_if = "Option::is_none")] pub terminals_matched_acceptance_threshold: Option, } @@ -33,6 +38,7 @@ pub enum Field { Optional { reference: Identifier, + #[serde(skip_serializing_if = "Option::is_none")] enabled: Option, }, } diff --git a/crates/codegen/language/definition/src/model/nonterminals/precedence.rs b/crates/codegen/language/definition/src/model/nonterminals/precedence.rs index 5e4f9b4eb8..cd3cbe3ca2 100644 --- a/crates/codegen/language/definition/src/model/nonterminals/precedence.rs +++ b/crates/codegen/language/definition/src/model/nonterminals/precedence.rs @@ -11,6 +11,7 @@ use crate::model::{Field, FieldsErrorRecovery, Identifier, VersionSpecifier}; pub struct PrecedenceItem { pub name: Identifier, + #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, pub precedence_expressions: Vec>, @@ -30,9 +31,12 @@ pub struct PrecedenceExpression { pub struct PrecedenceOperator { pub model: OperatorModel, + #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub error_recovery: Option, + pub fields: IndexMap, } @@ -50,5 +54,6 @@ pub enum OperatorModel { pub struct PrimaryExpression { pub reference: Identifier, + #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, } diff --git a/crates/codegen/language/definition/src/model/nonterminals/repeated.rs b/crates/codegen/language/definition/src/model/nonterminals/repeated.rs index b8653d0a9b..4b07fdf593 100644 --- a/crates/codegen/language/definition/src/model/nonterminals/repeated.rs +++ b/crates/codegen/language/definition/src/model/nonterminals/repeated.rs @@ -9,7 +9,9 @@ pub struct RepeatedItem { pub name: Identifier, pub reference: Identifier, + #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub allow_empty: Option, } diff --git a/crates/codegen/language/definition/src/model/nonterminals/separated.rs b/crates/codegen/language/definition/src/model/nonterminals/separated.rs index b91ec324c8..dc042198f1 100644 --- a/crates/codegen/language/definition/src/model/nonterminals/separated.rs +++ b/crates/codegen/language/definition/src/model/nonterminals/separated.rs @@ -10,7 +10,9 @@ pub struct SeparatedItem { pub reference: Identifier, pub separator: Identifier, + #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub allow_empty: Option, } diff --git a/crates/codegen/language/definition/src/model/nonterminals/struct_.rs b/crates/codegen/language/definition/src/model/nonterminals/struct_.rs index 2fabf7af69..3b7a8ba3aa 100644 --- a/crates/codegen/language/definition/src/model/nonterminals/struct_.rs +++ b/crates/codegen/language/definition/src/model/nonterminals/struct_.rs @@ -9,8 +9,11 @@ use crate::model::{Field, FieldsErrorRecovery, Identifier, VersionSpecifier}; pub struct StructItem { pub name: Identifier, + #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub error_recovery: Option, + pub fields: IndexMap, } diff --git a/crates/codegen/language/definition/src/model/terminals/fragment.rs b/crates/codegen/language/definition/src/model/terminals/fragment.rs index 585cccc12e..6e6fe897fc 100644 --- a/crates/codegen/language/definition/src/model/terminals/fragment.rs +++ b/crates/codegen/language/definition/src/model/terminals/fragment.rs @@ -8,6 +8,7 @@ use crate::model::{Identifier, Scanner, VersionSpecifier}; pub struct FragmentItem { pub name: Identifier, + #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, pub scanner: Scanner, diff --git a/crates/codegen/language/definition/src/model/terminals/keyword.rs b/crates/codegen/language/definition/src/model/terminals/keyword.rs index eeff982fc1..2222734463 100644 --- a/crates/codegen/language/definition/src/model/terminals/keyword.rs +++ b/crates/codegen/language/definition/src/model/terminals/keyword.rs @@ -16,10 +16,14 @@ pub struct KeywordItem { #[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] #[derive_spanned_type(Clone, Debug, ParseInputTokens, WriteOutputTokens)] pub struct KeywordDefinition { + #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, + /// When the keyword is reserved, i.e. can't be used in other position (e.g. as a name) + #[serde(skip_serializing_if = "Option::is_none")] pub reserved: Option, - // Underlying keyword scanner (i.e. identifier scanner) + + /// Underlying keyword scanner (i.e. identifier scanner) pub value: KeywordValue, } diff --git a/crates/codegen/language/definition/src/model/terminals/token.rs b/crates/codegen/language/definition/src/model/terminals/token.rs index 9f39455f4f..2ea24450eb 100644 --- a/crates/codegen/language/definition/src/model/terminals/token.rs +++ b/crates/codegen/language/definition/src/model/terminals/token.rs @@ -14,6 +14,7 @@ pub struct TokenItem { #[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] #[derive_spanned_type(Clone, Debug, ParseInputTokens, WriteOutputTokens)] pub struct TokenDefinition { + #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, pub scanner: Scanner, diff --git a/crates/codegen/language/tests/src/pass/tiny_language.rs b/crates/codegen/language/tests/src/pass/tiny_language.rs index 6b5652634a..cc9efb0d69 100644 --- a/crates/codegen/language/tests/src/pass/tiny_language.rs +++ b/crates/codegen/language/tests/src/pass/tiny_language.rs @@ -1,10 +1,7 @@ -use std::path::Path; - use codegen_language_definition::model::{ Field, Item, Language, Scanner, Section, StructItem, TokenDefinition, TokenItem, Topic, TriviaParser, }; -use infra_utils::paths::PathExtensions; use semver::Version; codegen_language_macros::compile!(Language( @@ -49,8 +46,8 @@ fn definition() { tiny::TinyDefinition::create(), Language { name: "Tiny".into(), - documentation_dir: Path::repo_path("tiny/docs"), - binding_rules_file: Path::repo_path("tiny/bindings/rules.msgb"), + documentation_dir: "tiny/docs".into(), + binding_rules_file: "tiny/bindings/rules.msgb".into(), file_extension: Some(".tiny".into()), root_item: "Foo".into(), leading_trivia: TriviaParser::Sequence { parsers: [].into() }, @@ -65,7 +62,6 @@ fn definition() { title: "Section One".into(), topics: vec![Topic { title: "Topic One".into(), - notes_file: None, lexical_context: None, items: [ Item::Struct { diff --git a/crates/codegen/runtime/generator/src/bindings/mod.rs b/crates/codegen/runtime/generator/src/bindings/mod.rs index 61e9f5687e..4017560cf6 100644 --- a/crates/codegen/runtime/generator/src/bindings/mod.rs +++ b/crates/codegen/runtime/generator/src/bindings/mod.rs @@ -1,4 +1,5 @@ use std::collections::BTreeSet; +use std::path::Path; use anyhow::Result; use codegen_language_definition::model; @@ -17,9 +18,10 @@ pub struct BindingsModel { impl BindingsModel { pub fn from_language(language: &model::Language) -> Result { // We use `CodegenFileSystem` here to ensure the rules are rebuilt if the rules file changes - let binding_rules_dir = language.binding_rules_file.unwrap_parent(); + let binding_rules_file = Path::repo_path(&language.binding_rules_file); + let binding_rules_dir = binding_rules_file.unwrap_parent(); let mut fs = CodegenFileSystem::new(binding_rules_dir)?; - let binding_rules_source = fs.read_file(&language.binding_rules_file)?; + let binding_rules_source = fs.read_file(&binding_rules_file)?; let built_ins_versions = language.collect_built_ins_versions(); let file_extension = language.file_extension.clone().unwrap_or_default(); diff --git a/crates/codegen/spec/Cargo.toml b/crates/codegen/spec/Cargo.toml index 833912f2d0..0753ebb039 100644 --- a/crates/codegen/spec/Cargo.toml +++ b/crates/codegen/spec/Cargo.toml @@ -14,6 +14,7 @@ Inflector = { workspace = true } infra_utils = { workspace = true } itertools = { workspace = true } serde = { workspace = true } +serde_json = { workspace = true } [lints] workspace = true diff --git a/crates/codegen/spec/src/generators/topic_page.rs b/crates/codegen/spec/src/generators/topic_page.rs index ff939be0a3..26ff17c5f1 100644 --- a/crates/codegen/spec/src/generators/topic_page.rs +++ b/crates/codegen/spec/src/generators/topic_page.rs @@ -53,7 +53,7 @@ pub fn generate_topic_page( } } - let documentation_dir = model.language.documentation_dir.strip_repo_root()?; + let documentation_dir = &model.language.documentation_dir; writeln!(buffer)?; writeln!( diff --git a/crates/codegen/spec/src/lib.rs b/crates/codegen/spec/src/lib.rs index 85ca47da4d..1e1f29df5d 100644 --- a/crates/codegen/spec/src/lib.rs +++ b/crates/codegen/spec/src/lib.rs @@ -15,6 +15,7 @@ use std::rc::Rc; use anyhow::Result; use codegen_language_definition::model::Language; use infra_utils::codegen::CodegenFileSystem; +use infra_utils::paths::PathExtensions; use crate::generators::grammar_ebnf::generate_grammar_ebnf; use crate::generators::navigation::{SpecDir, SpecPage}; @@ -26,7 +27,13 @@ pub struct Spec; impl Spec { pub fn generate(language: Rc, output_dir: &Path) -> Result<()> { - let mut fs = CodegenFileSystem::new(&language.documentation_dir)?; + let documentation_dir = Path::repo_path(&language.documentation_dir); + let mut fs = CodegenFileSystem::new(documentation_dir)?; + + fs.write_file( + output_dir.join("language-definition.json"), + serde_json::to_string(&language)?, + )?; let model = SpecModel::build(language); let public_dir = Self::generate_public_dir(&model)?; diff --git a/crates/solidity/outputs/spec/generated/language-definition.json b/crates/solidity/outputs/spec/generated/language-definition.json new file mode 100644 index 0000000000..3779457f4e --- /dev/null +++ b/crates/solidity/outputs/spec/generated/language-definition.json @@ -0,0 +1,9864 @@ +{ + "name": "Solidity", + "documentation_dir": "crates/solidity/inputs/language/docs", + "binding_rules_file": "crates/solidity/inputs/language/bindings/rules.msgb", + "file_extension": ".sol", + "root_item": "SourceUnit", + "leading_trivia": { + "OneOrMore": { + "parser": { + "Choice": { + "parsers": [ + { "Trivia": { "reference": "Whitespace" } }, + { "Trivia": { "reference": "EndOfLine" } }, + { "Trivia": { "reference": "SingleLineComment" } }, + { "Trivia": { "reference": "MultiLineComment" } }, + { "Trivia": { "reference": "SingleLineNatSpecComment" } }, + { "Trivia": { "reference": "MultiLineNatSpecComment" } } + ] + } + } + } + }, + "trailing_trivia": { + "Sequence": { + "parsers": [ + { "Optional": { "parser": { "Trivia": { "reference": "Whitespace" } } } }, + { "Optional": { "parser": { "Trivia": { "reference": "SingleLineComment" } } } }, + { "Trivia": { "reference": "EndOfLine" } } + ] + } + }, + "versions": [ + "0.4.11", + "0.4.12", + "0.4.13", + "0.4.14", + "0.4.15", + "0.4.16", + "0.4.17", + "0.4.18", + "0.4.19", + "0.4.20", + "0.4.21", + "0.4.22", + "0.4.23", + "0.4.24", + "0.4.25", + "0.4.26", + "0.5.0", + "0.5.1", + "0.5.2", + "0.5.3", + "0.5.4", + "0.5.5", + "0.5.6", + "0.5.7", + "0.5.8", + "0.5.9", + "0.5.10", + "0.5.11", + "0.5.12", + "0.5.13", + "0.5.14", + "0.5.15", + "0.5.16", + "0.5.17", + "0.6.0", + "0.6.1", + "0.6.2", + "0.6.3", + "0.6.4", + "0.6.5", + "0.6.6", + "0.6.7", + "0.6.8", + "0.6.9", + "0.6.10", + "0.6.11", + "0.6.12", + "0.7.0", + "0.7.1", + "0.7.2", + "0.7.3", + "0.7.4", + "0.7.5", + "0.7.6", + "0.8.0", + "0.8.1", + "0.8.2", + "0.8.3", + "0.8.4", + "0.8.5", + "0.8.6", + "0.8.7", + "0.8.8", + "0.8.9", + "0.8.10", + "0.8.11", + "0.8.12", + "0.8.13", + "0.8.14", + "0.8.15", + "0.8.16", + "0.8.17", + "0.8.18", + "0.8.19", + "0.8.20", + "0.8.21", + "0.8.22", + "0.8.23", + "0.8.24", + "0.8.25", + "0.8.26", + "0.8.27", + "0.8.28" + ], + "sections": [ + { + "title": "File Structure", + "topics": [ + { "title": "License Specifiers", "items": [] }, + { + "title": "Source Unit", + "items": [ + { + "Struct": { + "item": { + "name": "SourceUnit", + "fields": { "members": { "Required": { "reference": "SourceUnitMembers" } } } + } + } + }, + { + "Repeated": { + "item": { "name": "SourceUnitMembers", "reference": "SourceUnitMember", "allow_empty": true } + } + }, + { + "Enum": { + "item": { + "name": "SourceUnitMember", + "variants": [ + { "reference": "PragmaDirective" }, + { "reference": "ImportDirective" }, + { "reference": "ContractDefinition" }, + { "reference": "InterfaceDefinition" }, + { "reference": "LibraryDefinition" }, + { "reference": "StructDefinition", "enabled": { "From": { "from": "0.6.0" } } }, + { "reference": "EnumDefinition", "enabled": { "From": { "from": "0.6.0" } } }, + { "reference": "FunctionDefinition", "enabled": { "From": { "from": "0.7.1" } } }, + { "reference": "ErrorDefinition", "enabled": { "From": { "from": "0.8.4" } } }, + { "reference": "UserDefinedValueTypeDefinition", "enabled": { "From": { "from": "0.8.8" } } }, + { "reference": "UsingDirective", "enabled": { "From": { "from": "0.8.13" } } }, + { "reference": "EventDefinition", "enabled": { "From": { "from": "0.8.22" } } }, + { "reference": "ConstantDefinition", "enabled": { "From": { "from": "0.7.4" } } } + ] + } + } + } + ] + }, + { + "title": "Pragma Directives", + "lexical_context": "Pragma", + "items": [ + { + "Struct": { + "item": { + "name": "PragmaDirective", + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "pragma_keyword": { "Required": { "reference": "PragmaKeyword" } }, + "pragma": { "Required": { "reference": "Pragma" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + }, + { + "Enum": { + "item": { + "name": "Pragma", + "variants": [ + { "reference": "AbicoderPragma" }, + { "reference": "ExperimentalPragma" }, + { "reference": "VersionPragma" } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "AbicoderPragma", + "fields": { + "abicoder_keyword": { "Required": { "reference": "AbicoderKeyword" } }, + "version": { "Required": { "reference": "Identifier" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "ExperimentalPragma", + "fields": { + "experimental_keyword": { "Required": { "reference": "ExperimentalKeyword" } }, + "feature": { "Required": { "reference": "ExperimentalFeature" } } + } + } + } + }, + { + "Enum": { + "item": { + "name": "ExperimentalFeature", + "variants": [{ "reference": "Identifier" }, { "reference": "StringLiteral" }] + } + } + }, + { + "Struct": { + "item": { + "name": "VersionPragma", + "fields": { + "solidity_keyword": { "Required": { "reference": "SolidityKeyword" } }, + "sets": { "Required": { "reference": "VersionExpressionSets" } } + } + } + } + }, + { + "Separated": { + "item": { "name": "VersionExpressionSets", "reference": "VersionExpressionSet", "separator": "BarBar" } + } + }, + { "Repeated": { "item": { "name": "VersionExpressionSet", "reference": "VersionExpression" } } }, + { + "Enum": { + "item": { + "name": "VersionExpression", + "variants": [{ "reference": "VersionRange" }, { "reference": "VersionTerm" }] + } + } + }, + { + "Struct": { + "item": { + "name": "VersionRange", + "fields": { + "start": { "Required": { "reference": "VersionLiteral" } }, + "minus": { "Required": { "reference": "Minus" } }, + "end": { "Required": { "reference": "VersionLiteral" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "VersionTerm", + "fields": { + "operator": { "Optional": { "reference": "VersionOperator" } }, + "literal": { "Required": { "reference": "VersionLiteral" } } + } + } + } + }, + { + "Enum": { + "item": { + "name": "VersionOperator", + "variants": [ + { "reference": "Caret" }, + { "reference": "Tilde" }, + { "reference": "Equal" }, + { "reference": "LessThan" }, + { "reference": "GreaterThan" }, + { "reference": "LessThanEqual" }, + { "reference": "GreaterThanEqual" } + ] + } + } + }, + { + "Enum": { + "item": { + "name": "VersionLiteral", + "variants": [ + { "reference": "SimpleVersionLiteral" }, + { "reference": "SingleQuotedVersionLiteral" }, + { "reference": "DoubleQuotedVersionLiteral" } + ] + } + } + }, + { + "Separated": { + "item": { "name": "SimpleVersionLiteral", "reference": "VersionSpecifier", "separator": "Period" } + } + }, + { + "Token": { + "item": { + "name": "VersionSpecifier", + "definitions": [{ "scanner": { "Fragment": { "reference": "VersionSpecifierFragment" } } }] + } + } + }, + { + "Token": { + "item": { + "name": "SingleQuotedVersionLiteral", + "definitions": [ + { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "'" } }, + { "Fragment": { "reference": "VersionSpecifierFragment" } }, + { + "ZeroOrMore": { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "." } }, + { "Fragment": { "reference": "VersionSpecifierFragment" } } + ] + } + } + } + }, + { "Atom": { "atom": "'" } } + ] + } + } + } + ] + } + } + }, + { + "Token": { + "item": { + "name": "DoubleQuotedVersionLiteral", + "definitions": [ + { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "\"" } }, + { "Fragment": { "reference": "VersionSpecifierFragment" } }, + { + "ZeroOrMore": { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "." } }, + { "Fragment": { "reference": "VersionSpecifierFragment" } } + ] + } + } + } + }, + { "Atom": { "atom": "\"" } } + ] + } + } + } + ] + } + } + }, + { + "Fragment": { + "item": { + "name": "VersionSpecifierFragment", + "scanner": { + "OneOrMore": { + "scanner": { + "Choice": { + "scanners": [ + { "Range": { "inclusive_start": "0", "inclusive_end": "9" } }, + { "Atom": { "atom": "x" } }, + { "Atom": { "atom": "X" } }, + { "Atom": { "atom": "*" } } + ] + } + } + } + } + } + } + }, + { + "Keyword": { + "item": { + "name": "AbicoderKeyword", + "identifier": "Identifier", + "definitions": [{ "reserved": "Never", "value": { "Atom": { "atom": "abicoder" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "ExperimentalKeyword", + "identifier": "Identifier", + "definitions": [{ "reserved": "Never", "value": { "Atom": { "atom": "experimental" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "SolidityKeyword", + "identifier": "Identifier", + "definitions": [{ "reserved": "Never", "value": { "Atom": { "atom": "solidity" } } }] + } + } + } + ] + }, + { + "title": "Import Directives", + "items": [ + { + "Struct": { + "item": { + "name": "ImportDirective", + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "import_keyword": { "Required": { "reference": "ImportKeyword" } }, + "clause": { "Required": { "reference": "ImportClause" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + }, + { + "Enum": { + "item": { + "name": "ImportClause", + "variants": [ + { "reference": "PathImport" }, + { "reference": "NamedImport" }, + { "reference": "ImportDeconstruction" } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "PathImport", + "fields": { + "path": { "Required": { "reference": "StringLiteral" } }, + "alias": { "Optional": { "reference": "ImportAlias" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "NamedImport", + "fields": { + "asterisk": { "Required": { "reference": "Asterisk" } }, + "alias": { "Required": { "reference": "ImportAlias" } }, + "from_keyword": { "Required": { "reference": "FromKeyword" } }, + "path": { "Required": { "reference": "StringLiteral" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "ImportDeconstruction", + "error_recovery": { "delimiters": { "open": "open_brace", "close": "close_brace" } }, + "fields": { + "open_brace": { "Required": { "reference": "OpenBrace" } }, + "symbols": { "Required": { "reference": "ImportDeconstructionSymbols" } }, + "close_brace": { "Required": { "reference": "CloseBrace" } }, + "from_keyword": { "Required": { "reference": "FromKeyword" } }, + "path": { "Required": { "reference": "StringLiteral" } } + } + } + } + }, + { + "Separated": { + "item": { + "name": "ImportDeconstructionSymbols", + "reference": "ImportDeconstructionSymbol", + "separator": "Comma" + } + } + }, + { + "Struct": { + "item": { + "name": "ImportDeconstructionSymbol", + "fields": { + "name": { "Required": { "reference": "Identifier" } }, + "alias": { "Optional": { "reference": "ImportAlias" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "ImportAlias", + "fields": { + "as_keyword": { "Required": { "reference": "AsKeyword" } }, + "identifier": { "Required": { "reference": "Identifier" } } + } + } + } + } + ] + }, + { + "title": "Using Directives", + "items": [ + { + "Struct": { + "item": { + "name": "UsingDirective", + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "using_keyword": { "Required": { "reference": "UsingKeyword" } }, + "clause": { "Required": { "reference": "UsingClause" } }, + "for_keyword": { "Required": { "reference": "ForKeyword" } }, + "target": { "Required": { "reference": "UsingTarget" } }, + "global_keyword": { + "Optional": { "reference": "GlobalKeyword", "enabled": { "From": { "from": "0.8.13" } } } + }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + }, + { + "Enum": { + "item": { + "name": "UsingClause", + "variants": [ + { "reference": "IdentifierPath" }, + { "reference": "UsingDeconstruction", "enabled": { "From": { "from": "0.8.13" } } } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "UsingDeconstruction", + "enabled": { "From": { "from": "0.8.13" } }, + "error_recovery": { "delimiters": { "open": "open_brace", "close": "close_brace" } }, + "fields": { + "open_brace": { "Required": { "reference": "OpenBrace" } }, + "symbols": { "Required": { "reference": "UsingDeconstructionSymbols" } }, + "close_brace": { "Required": { "reference": "CloseBrace" } } + } + } + } + }, + { + "Separated": { + "item": { + "name": "UsingDeconstructionSymbols", + "reference": "UsingDeconstructionSymbol", + "separator": "Comma", + "enabled": { "From": { "from": "0.8.13" } } + } + } + }, + { + "Struct": { + "item": { + "name": "UsingDeconstructionSymbol", + "enabled": { "From": { "from": "0.8.13" } }, + "fields": { + "name": { "Required": { "reference": "IdentifierPath" } }, + "alias": { "Optional": { "reference": "UsingAlias", "enabled": { "From": { "from": "0.8.19" } } } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "UsingAlias", + "enabled": { "From": { "from": "0.8.19" } }, + "fields": { + "as_keyword": { "Required": { "reference": "AsKeyword" } }, + "operator": { "Required": { "reference": "UsingOperator" } } + } + } + } + }, + { + "Enum": { + "item": { + "name": "UsingOperator", + "enabled": { "From": { "from": "0.8.19" } }, + "variants": [ + { "reference": "Ampersand" }, + { "reference": "Asterisk" }, + { "reference": "BangEqual" }, + { "reference": "Bar" }, + { "reference": "Caret" }, + { "reference": "EqualEqual" }, + { "reference": "GreaterThan" }, + { "reference": "GreaterThanEqual" }, + { "reference": "LessThan" }, + { "reference": "LessThanEqual" }, + { "reference": "Minus" }, + { "reference": "Percent" }, + { "reference": "Plus" }, + { "reference": "Slash" }, + { "reference": "Tilde" } + ] + } + } + }, + { + "Enum": { + "item": { + "name": "UsingTarget", + "variants": [{ "reference": "TypeName" }, { "reference": "Asterisk" }] + } + } + } + ] + }, + { + "title": "Trivia", + "items": [ + { + "Trivia": { + "item": { + "name": "Whitespace", + "scanner": { + "OneOrMore": { + "scanner": { + "Choice": { "scanners": [{ "Atom": { "atom": " " } }, { "Atom": { "atom": "\t" } }] } + } + } + } + } + } + }, + { + "Trivia": { + "item": { + "name": "EndOfLine", + "scanner": { + "Choice": { + "scanners": [ + { "Atom": { "atom": "\n" } }, + { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "\r" } }, + { "Optional": { "scanner": { "Atom": { "atom": "\n" } } } } + ] + } + } + ] + } + } + } + } + }, + { + "Trivia": { + "item": { + "name": "SingleLineComment", + "scanner": { + "Sequence": { + "scanners": [ + { + "TrailingContext": { + "scanner": { "Atom": { "atom": "//" } }, + "not_followed_by": { "Atom": { "atom": "/" } } + } + }, + { "ZeroOrMore": { "scanner": { "Not": { "chars": ["\r", "\n"] } } } } + ] + } + } + } + } + }, + { + "Trivia": { + "item": { + "name": "MultiLineComment", + "scanner": { + "Sequence": { + "scanners": [ + { + "TrailingContext": { + "scanner": { "Atom": { "atom": "/*" } }, + "not_followed_by": { + "Sequence": { "scanners": [{ "Atom": { "atom": "*" } }, { "Not": { "chars": ["/"] } }] } + } + } + }, + { + "ZeroOrMore": { + "scanner": { + "Choice": { + "scanners": [ + { "Not": { "chars": ["*"] } }, + { + "TrailingContext": { + "scanner": { "Atom": { "atom": "*" } }, + "not_followed_by": { "Atom": { "atom": "/" } } + } + } + ] + } + } + } + }, + { "Atom": { "atom": "*/" } } + ] + } + } + } + } + }, + { + "Trivia": { + "item": { + "name": "SingleLineNatSpecComment", + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "///" } }, + { "ZeroOrMore": { "scanner": { "Not": { "chars": ["\r", "\n"] } } } } + ] + } + } + } + } + }, + { + "Trivia": { + "item": { + "name": "MultiLineNatSpecComment", + "scanner": { + "Sequence": { + "scanners": [ + { + "TrailingContext": { + "scanner": { "Atom": { "atom": "/**" } }, + "not_followed_by": { "Atom": { "atom": "/" } } + } + }, + { + "ZeroOrMore": { + "scanner": { + "Choice": { + "scanners": [ + { "Not": { "chars": ["*"] } }, + { + "TrailingContext": { + "scanner": { "Atom": { "atom": "*" } }, + "not_followed_by": { "Atom": { "atom": "/" } } + } + } + ] + } + } + } + }, + { "Atom": { "atom": "*/" } } + ] + } + } + } + } + } + ] + }, + { "title": "Nat Spec Format", "items": [] }, + { + "title": "Keywords", + "items": [ + { + "Keyword": { + "item": { + "name": "AbstractKeyword", + "identifier": "Identifier", + "definitions": [ + { "enabled": { "From": { "from": "0.6.0" } }, "value": { "Atom": { "atom": "abstract" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "AddressKeyword", + "identifier": "Identifier", + "definitions": [{ "reserved": "Never", "value": { "Atom": { "atom": "address" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "AfterKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "after" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "AliasKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "alias" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "AnonymousKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "anonymous" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "ApplyKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "apply" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "AsKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "as" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "AssemblyKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "assembly" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "AutoKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "auto" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "BoolKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "bool" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "BreakKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "break" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "ByteKeyword", + "identifier": "Identifier", + "definitions": [ + { "enabled": { "Till": { "till": "0.8.0" } }, "value": { "Atom": { "atom": "byte" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "BytesKeyword", + "identifier": "Identifier", + "definitions": [ + { + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "bytes" } }, + { + "Optional": { + "value": { + "Choice": { + "values": [ + { "Atom": { "atom": "1" } }, + { "Atom": { "atom": "2" } }, + { "Atom": { "atom": "3" } }, + { "Atom": { "atom": "4" } }, + { "Atom": { "atom": "5" } }, + { "Atom": { "atom": "6" } }, + { "Atom": { "atom": "7" } }, + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "9" } }, + { "Atom": { "atom": "10" } }, + { "Atom": { "atom": "11" } }, + { "Atom": { "atom": "12" } }, + { "Atom": { "atom": "13" } }, + { "Atom": { "atom": "14" } }, + { "Atom": { "atom": "15" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "17" } }, + { "Atom": { "atom": "18" } }, + { "Atom": { "atom": "19" } }, + { "Atom": { "atom": "20" } }, + { "Atom": { "atom": "21" } }, + { "Atom": { "atom": "22" } }, + { "Atom": { "atom": "23" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "25" } }, + { "Atom": { "atom": "26" } }, + { "Atom": { "atom": "27" } }, + { "Atom": { "atom": "28" } }, + { "Atom": { "atom": "29" } }, + { "Atom": { "atom": "30" } }, + { "Atom": { "atom": "31" } }, + { "Atom": { "atom": "32" } } + ] + } + } + } + } + ] + } + } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "CallDataKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.5.0" } }, + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "calldata" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "CaseKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "case" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "CatchKeyword", + "identifier": "Identifier", + "definitions": [ + { "enabled": { "From": { "from": "0.6.0" } }, "value": { "Atom": { "atom": "catch" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "ConstantKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "constant" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "ConstructorKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.4.22" } }, + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "constructor" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "ContinueKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "continue" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "ContractKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "contract" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "CopyOfKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "copyof" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "DaysKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "days" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "DefaultKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "default" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "DefineKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "define" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "DeleteKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "delete" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "DoKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "do" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "ElseKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "else" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "EmitKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.4.21" } }, + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "emit" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "EnumKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "enum" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "ErrorKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.8.4" } }, + "reserved": "Never", + "value": { "Atom": { "atom": "error" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "EtherKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "ether" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "EventKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "event" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "ExternalKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "external" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "FallbackKeyword", + "identifier": "Identifier", + "definitions": [ + { "reserved": { "From": { "from": "0.6.0" } }, "value": { "Atom": { "atom": "fallback" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "FalseKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "false" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "FinalKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "final" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "FinneyKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": { "Till": { "till": "0.7.0" } }, + "reserved": { "Till": { "till": "0.7.0" } }, + "value": { "Atom": { "atom": "finney" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "FixedKeyword", + "identifier": "Identifier", + "definitions": [ + { "value": { "Atom": { "atom": "fixed" } } }, + { + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "fixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } }, + { "Atom": { "atom": "88" } }, + { "Atom": { "atom": "96" } }, + { "Atom": { "atom": "104" } }, + { "Atom": { "atom": "112" } }, + { "Atom": { "atom": "120" } }, + { "Atom": { "atom": "128" } }, + { "Atom": { "atom": "136" } }, + { "Atom": { "atom": "144" } }, + { "Atom": { "atom": "152" } }, + { "Atom": { "atom": "160" } }, + { "Atom": { "atom": "168" } }, + { "Atom": { "atom": "176" } } + ] + } + }, + { "Atom": { "atom": "x" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } } + ] + } + } + ] + } + } + }, + { + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "fixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "184x8" } }, + { "Atom": { "atom": "184x16" } }, + { "Atom": { "atom": "184x24" } }, + { "Atom": { "atom": "184x32" } }, + { "Atom": { "atom": "184x40" } }, + { "Atom": { "atom": "184x48" } }, + { "Atom": { "atom": "184x56" } }, + { "Atom": { "atom": "184x64" } }, + { "Atom": { "atom": "184x72" } }, + { "Atom": { "atom": "192x8" } }, + { "Atom": { "atom": "192x16" } }, + { "Atom": { "atom": "192x24" } }, + { "Atom": { "atom": "192x32" } }, + { "Atom": { "atom": "192x40" } }, + { "Atom": { "atom": "192x48" } }, + { "Atom": { "atom": "192x56" } }, + { "Atom": { "atom": "192x64" } }, + { "Atom": { "atom": "200x8" } }, + { "Atom": { "atom": "200x16" } }, + { "Atom": { "atom": "200x24" } }, + { "Atom": { "atom": "200x32" } }, + { "Atom": { "atom": "200x40" } }, + { "Atom": { "atom": "200x48" } }, + { "Atom": { "atom": "200x56" } }, + { "Atom": { "atom": "208x8" } }, + { "Atom": { "atom": "208x16" } }, + { "Atom": { "atom": "208x24" } }, + { "Atom": { "atom": "208x32" } }, + { "Atom": { "atom": "208x40" } }, + { "Atom": { "atom": "208x48" } }, + { "Atom": { "atom": "216x8" } }, + { "Atom": { "atom": "216x16" } }, + { "Atom": { "atom": "216x24" } }, + { "Atom": { "atom": "216x32" } }, + { "Atom": { "atom": "216x40" } }, + { "Atom": { "atom": "224x8" } }, + { "Atom": { "atom": "224x16" } }, + { "Atom": { "atom": "224x24" } }, + { "Atom": { "atom": "224x32" } }, + { "Atom": { "atom": "232x8" } }, + { "Atom": { "atom": "232x16" } }, + { "Atom": { "atom": "232x24" } }, + { "Atom": { "atom": "240x8" } }, + { "Atom": { "atom": "240x16" } }, + { "Atom": { "atom": "248x8" } } + ] + } + } + ] + } + } + }, + { + "reserved": { "From": { "from": "0.4.14" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "fixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "184x80" } }, + { "Atom": { "atom": "192x72" } }, + { "Atom": { "atom": "192x80" } }, + { "Atom": { "atom": "200x64" } }, + { "Atom": { "atom": "200x72" } }, + { "Atom": { "atom": "200x80" } }, + { "Atom": { "atom": "208x56" } }, + { "Atom": { "atom": "208x64" } }, + { "Atom": { "atom": "208x72" } }, + { "Atom": { "atom": "208x80" } }, + { "Atom": { "atom": "216x48" } }, + { "Atom": { "atom": "216x56" } }, + { "Atom": { "atom": "216x64" } }, + { "Atom": { "atom": "216x72" } }, + { "Atom": { "atom": "216x80" } }, + { "Atom": { "atom": "224x40" } }, + { "Atom": { "atom": "224x48" } }, + { "Atom": { "atom": "224x56" } }, + { "Atom": { "atom": "224x64" } }, + { "Atom": { "atom": "224x72" } }, + { "Atom": { "atom": "224x80" } }, + { "Atom": { "atom": "232x32" } }, + { "Atom": { "atom": "232x40" } }, + { "Atom": { "atom": "232x48" } }, + { "Atom": { "atom": "232x56" } }, + { "Atom": { "atom": "232x64" } }, + { "Atom": { "atom": "232x72" } }, + { "Atom": { "atom": "232x80" } }, + { "Atom": { "atom": "240x24" } }, + { "Atom": { "atom": "240x32" } }, + { "Atom": { "atom": "240x40" } }, + { "Atom": { "atom": "240x48" } }, + { "Atom": { "atom": "240x56" } }, + { "Atom": { "atom": "240x64" } }, + { "Atom": { "atom": "240x72" } }, + { "Atom": { "atom": "240x80" } }, + { "Atom": { "atom": "248x16" } }, + { "Atom": { "atom": "248x24" } }, + { "Atom": { "atom": "248x32" } }, + { "Atom": { "atom": "248x40" } }, + { "Atom": { "atom": "248x48" } }, + { "Atom": { "atom": "248x56" } }, + { "Atom": { "atom": "248x64" } }, + { "Atom": { "atom": "248x72" } }, + { "Atom": { "atom": "248x80" } }, + { "Atom": { "atom": "256x8" } }, + { "Atom": { "atom": "256x16" } }, + { "Atom": { "atom": "256x24" } }, + { "Atom": { "atom": "256x32" } }, + { "Atom": { "atom": "256x40" } }, + { "Atom": { "atom": "256x48" } }, + { "Atom": { "atom": "256x56" } }, + { "Atom": { "atom": "256x64" } }, + { "Atom": { "atom": "256x72" } }, + { "Atom": { "atom": "256x80" } } + ] + } + } + ] + } + } + }, + { + "reserved": { "From": { "from": "0.4.14" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "fixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } }, + { "Atom": { "atom": "88" } }, + { "Atom": { "atom": "96" } }, + { "Atom": { "atom": "104" } }, + { "Atom": { "atom": "112" } }, + { "Atom": { "atom": "120" } }, + { "Atom": { "atom": "128" } }, + { "Atom": { "atom": "136" } }, + { "Atom": { "atom": "144" } }, + { "Atom": { "atom": "152" } }, + { "Atom": { "atom": "160" } }, + { "Atom": { "atom": "168" } }, + { "Atom": { "atom": "176" } }, + { "Atom": { "atom": "184" } }, + { "Atom": { "atom": "192" } }, + { "Atom": { "atom": "200" } }, + { "Atom": { "atom": "208" } }, + { "Atom": { "atom": "216" } }, + { "Atom": { "atom": "224" } }, + { "Atom": { "atom": "232" } }, + { "Atom": { "atom": "240" } }, + { "Atom": { "atom": "248" } }, + { "Atom": { "atom": "256" } } + ] + } + }, + { "Atom": { "atom": "x" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "0" } }, + { "Atom": { "atom": "1" } }, + { "Atom": { "atom": "2" } }, + { "Atom": { "atom": "3" } }, + { "Atom": { "atom": "4" } }, + { "Atom": { "atom": "5" } }, + { "Atom": { "atom": "6" } }, + { "Atom": { "atom": "7" } }, + { "Atom": { "atom": "9" } }, + { "Atom": { "atom": "10" } }, + { "Atom": { "atom": "11" } }, + { "Atom": { "atom": "12" } }, + { "Atom": { "atom": "13" } }, + { "Atom": { "atom": "14" } }, + { "Atom": { "atom": "15" } }, + { "Atom": { "atom": "17" } }, + { "Atom": { "atom": "18" } }, + { "Atom": { "atom": "19" } }, + { "Atom": { "atom": "20" } }, + { "Atom": { "atom": "21" } }, + { "Atom": { "atom": "22" } }, + { "Atom": { "atom": "23" } }, + { "Atom": { "atom": "25" } }, + { "Atom": { "atom": "26" } }, + { "Atom": { "atom": "27" } }, + { "Atom": { "atom": "28" } }, + { "Atom": { "atom": "29" } }, + { "Atom": { "atom": "30" } }, + { "Atom": { "atom": "31" } }, + { "Atom": { "atom": "33" } }, + { "Atom": { "atom": "34" } }, + { "Atom": { "atom": "35" } }, + { "Atom": { "atom": "36" } }, + { "Atom": { "atom": "37" } }, + { "Atom": { "atom": "38" } }, + { "Atom": { "atom": "39" } }, + { "Atom": { "atom": "41" } }, + { "Atom": { "atom": "42" } }, + { "Atom": { "atom": "43" } }, + { "Atom": { "atom": "44" } }, + { "Atom": { "atom": "45" } }, + { "Atom": { "atom": "46" } }, + { "Atom": { "atom": "47" } }, + { "Atom": { "atom": "49" } }, + { "Atom": { "atom": "50" } }, + { "Atom": { "atom": "51" } }, + { "Atom": { "atom": "52" } }, + { "Atom": { "atom": "53" } }, + { "Atom": { "atom": "54" } }, + { "Atom": { "atom": "55" } }, + { "Atom": { "atom": "57" } }, + { "Atom": { "atom": "58" } }, + { "Atom": { "atom": "59" } }, + { "Atom": { "atom": "60" } }, + { "Atom": { "atom": "61" } }, + { "Atom": { "atom": "62" } }, + { "Atom": { "atom": "63" } }, + { "Atom": { "atom": "65" } }, + { "Atom": { "atom": "66" } }, + { "Atom": { "atom": "67" } }, + { "Atom": { "atom": "68" } }, + { "Atom": { "atom": "69" } }, + { "Atom": { "atom": "70" } }, + { "Atom": { "atom": "71" } }, + { "Atom": { "atom": "73" } }, + { "Atom": { "atom": "74" } }, + { "Atom": { "atom": "75" } }, + { "Atom": { "atom": "76" } }, + { "Atom": { "atom": "77" } }, + { "Atom": { "atom": "78" } }, + { "Atom": { "atom": "79" } } + ] + } + } + ] + } + } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "ForKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "for" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "FromKeyword", + "identifier": "Identifier", + "definitions": [{ "reserved": "Never", "value": { "Atom": { "atom": "from" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "FunctionKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "function" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "GlobalKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.8.13" } }, + "reserved": "Never", + "value": { "Atom": { "atom": "global" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "GweiKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.6.11" } }, + "reserved": { "From": { "from": "0.7.0" } }, + "value": { "Atom": { "atom": "gwei" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "HexKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "hex" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "HoursKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "hours" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "IfKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "if" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "ImmutableKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.6.5" } }, + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "immutable" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "ImplementsKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "implements" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "ImportKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "import" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "IndexedKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "indexed" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "InKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "in" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "InlineKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "inline" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "InterfaceKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "interface" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "InternalKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "internal" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "IntKeyword", + "identifier": "Identifier", + "definitions": [ + { + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "int" } }, + { + "Optional": { + "value": { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } }, + { "Atom": { "atom": "88" } }, + { "Atom": { "atom": "96" } }, + { "Atom": { "atom": "104" } }, + { "Atom": { "atom": "112" } }, + { "Atom": { "atom": "120" } }, + { "Atom": { "atom": "128" } }, + { "Atom": { "atom": "136" } }, + { "Atom": { "atom": "144" } }, + { "Atom": { "atom": "152" } }, + { "Atom": { "atom": "160" } }, + { "Atom": { "atom": "168" } }, + { "Atom": { "atom": "176" } }, + { "Atom": { "atom": "184" } }, + { "Atom": { "atom": "192" } }, + { "Atom": { "atom": "200" } }, + { "Atom": { "atom": "208" } }, + { "Atom": { "atom": "216" } }, + { "Atom": { "atom": "224" } }, + { "Atom": { "atom": "232" } }, + { "Atom": { "atom": "240" } }, + { "Atom": { "atom": "248" } }, + { "Atom": { "atom": "256" } } + ] + } + } + } + } + ] + } + } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "IsKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "is" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "LetKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "let" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "LibraryKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "library" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "MacroKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "macro" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "MappingKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "mapping" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "MatchKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "match" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "MemoryKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "memory" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "MinutesKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "minutes" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "ModifierKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "modifier" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "MutableKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "mutable" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "NewKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "new" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "NullKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "null" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "OfKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "of" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "OverrideKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.6.0" } }, + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "override" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "PartialKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "partial" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "PayableKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "payable" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "PragmaKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "pragma" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "PrivateKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "private" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "PromiseKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "promise" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "PublicKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "public" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "PureKeyword", + "identifier": "Identifier", + "definitions": [ + { "enabled": { "From": { "from": "0.4.16" } }, "value": { "Atom": { "atom": "pure" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "ReceiveKeyword", + "identifier": "Identifier", + "definitions": [ + { "reserved": { "From": { "from": "0.6.0" } }, "value": { "Atom": { "atom": "receive" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "ReferenceKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "reference" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "RelocatableKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "relocatable" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "ReturnKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "return" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "ReturnsKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "returns" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "RevertKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.8.4" } }, + "reserved": "Never", + "value": { "Atom": { "atom": "revert" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "SealedKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "sealed" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "SecondsKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "seconds" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "SizeOfKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "sizeof" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "StaticKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "static" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "StorageKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "storage" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "StringKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "string" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "StructKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "struct" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "SuperKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "super" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "SupportsKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "supports" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "SwitchKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "switch" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "SzaboKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": { "Till": { "till": "0.7.0" } }, + "reserved": { "Till": { "till": "0.7.0" } }, + "value": { "Atom": { "atom": "szabo" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "ThisKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "this" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "ThrowKeyword", + "identifier": "Identifier", + "definitions": [ + { "enabled": { "Till": { "till": "0.5.0" } }, "value": { "Atom": { "atom": "throw" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "TransientKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.8.27" } }, + "reserved": "Never", + "value": { "Atom": { "atom": "transient" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "TrueKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "true" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "TryKeyword", + "identifier": "Identifier", + "definitions": [ + { "enabled": { "From": { "from": "0.6.0" } }, "value": { "Atom": { "atom": "try" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "TypeDefKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "typedef" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "TypeKeyword", + "identifier": "Identifier", + "definitions": [ + { "enabled": { "From": { "from": "0.5.3" } }, "value": { "Atom": { "atom": "type" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "TypeOfKeyword", + "identifier": "Identifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "typeof" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "UfixedKeyword", + "identifier": "Identifier", + "definitions": [ + { "value": { "Atom": { "atom": "ufixed" } } }, + { + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "ufixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } }, + { "Atom": { "atom": "88" } }, + { "Atom": { "atom": "96" } }, + { "Atom": { "atom": "104" } }, + { "Atom": { "atom": "112" } }, + { "Atom": { "atom": "120" } }, + { "Atom": { "atom": "128" } }, + { "Atom": { "atom": "136" } }, + { "Atom": { "atom": "144" } }, + { "Atom": { "atom": "152" } }, + { "Atom": { "atom": "160" } }, + { "Atom": { "atom": "168" } }, + { "Atom": { "atom": "176" } } + ] + } + }, + { "Atom": { "atom": "x" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } } + ] + } + } + ] + } + } + }, + { + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "ufixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "184x8" } }, + { "Atom": { "atom": "184x16" } }, + { "Atom": { "atom": "184x24" } }, + { "Atom": { "atom": "184x32" } }, + { "Atom": { "atom": "184x40" } }, + { "Atom": { "atom": "184x48" } }, + { "Atom": { "atom": "184x56" } }, + { "Atom": { "atom": "184x64" } }, + { "Atom": { "atom": "184x72" } }, + { "Atom": { "atom": "192x8" } }, + { "Atom": { "atom": "192x16" } }, + { "Atom": { "atom": "192x24" } }, + { "Atom": { "atom": "192x32" } }, + { "Atom": { "atom": "192x40" } }, + { "Atom": { "atom": "192x48" } }, + { "Atom": { "atom": "192x56" } }, + { "Atom": { "atom": "192x64" } }, + { "Atom": { "atom": "200x8" } }, + { "Atom": { "atom": "200x16" } }, + { "Atom": { "atom": "200x24" } }, + { "Atom": { "atom": "200x32" } }, + { "Atom": { "atom": "200x40" } }, + { "Atom": { "atom": "200x48" } }, + { "Atom": { "atom": "200x56" } }, + { "Atom": { "atom": "208x8" } }, + { "Atom": { "atom": "208x16" } }, + { "Atom": { "atom": "208x24" } }, + { "Atom": { "atom": "208x32" } }, + { "Atom": { "atom": "208x40" } }, + { "Atom": { "atom": "208x48" } }, + { "Atom": { "atom": "216x8" } }, + { "Atom": { "atom": "216x16" } }, + { "Atom": { "atom": "216x24" } }, + { "Atom": { "atom": "216x32" } }, + { "Atom": { "atom": "216x40" } }, + { "Atom": { "atom": "224x8" } }, + { "Atom": { "atom": "224x16" } }, + { "Atom": { "atom": "224x24" } }, + { "Atom": { "atom": "224x32" } }, + { "Atom": { "atom": "232x8" } }, + { "Atom": { "atom": "232x16" } }, + { "Atom": { "atom": "232x24" } }, + { "Atom": { "atom": "240x8" } }, + { "Atom": { "atom": "240x16" } }, + { "Atom": { "atom": "248x8" } } + ] + } + } + ] + } + } + }, + { + "reserved": { "From": { "from": "0.4.14" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "ufixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "184x80" } }, + { "Atom": { "atom": "192x72" } }, + { "Atom": { "atom": "192x80" } }, + { "Atom": { "atom": "200x64" } }, + { "Atom": { "atom": "200x72" } }, + { "Atom": { "atom": "200x80" } }, + { "Atom": { "atom": "208x56" } }, + { "Atom": { "atom": "208x64" } }, + { "Atom": { "atom": "208x72" } }, + { "Atom": { "atom": "208x80" } }, + { "Atom": { "atom": "216x48" } }, + { "Atom": { "atom": "216x56" } }, + { "Atom": { "atom": "216x64" } }, + { "Atom": { "atom": "216x72" } }, + { "Atom": { "atom": "216x80" } }, + { "Atom": { "atom": "224x40" } }, + { "Atom": { "atom": "224x48" } }, + { "Atom": { "atom": "224x56" } }, + { "Atom": { "atom": "224x64" } }, + { "Atom": { "atom": "224x72" } }, + { "Atom": { "atom": "224x80" } }, + { "Atom": { "atom": "232x32" } }, + { "Atom": { "atom": "232x40" } }, + { "Atom": { "atom": "232x48" } }, + { "Atom": { "atom": "232x56" } }, + { "Atom": { "atom": "232x64" } }, + { "Atom": { "atom": "232x72" } }, + { "Atom": { "atom": "232x80" } }, + { "Atom": { "atom": "240x24" } }, + { "Atom": { "atom": "240x32" } }, + { "Atom": { "atom": "240x40" } }, + { "Atom": { "atom": "240x48" } }, + { "Atom": { "atom": "240x56" } }, + { "Atom": { "atom": "240x64" } }, + { "Atom": { "atom": "240x72" } }, + { "Atom": { "atom": "240x80" } }, + { "Atom": { "atom": "248x16" } }, + { "Atom": { "atom": "248x24" } }, + { "Atom": { "atom": "248x32" } }, + { "Atom": { "atom": "248x40" } }, + { "Atom": { "atom": "248x48" } }, + { "Atom": { "atom": "248x56" } }, + { "Atom": { "atom": "248x64" } }, + { "Atom": { "atom": "248x72" } }, + { "Atom": { "atom": "248x80" } }, + { "Atom": { "atom": "256x8" } }, + { "Atom": { "atom": "256x16" } }, + { "Atom": { "atom": "256x24" } }, + { "Atom": { "atom": "256x32" } }, + { "Atom": { "atom": "256x40" } }, + { "Atom": { "atom": "256x48" } }, + { "Atom": { "atom": "256x56" } }, + { "Atom": { "atom": "256x64" } }, + { "Atom": { "atom": "256x72" } }, + { "Atom": { "atom": "256x80" } } + ] + } + } + ] + } + } + }, + { + "reserved": { "From": { "from": "0.4.14" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "ufixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } }, + { "Atom": { "atom": "88" } }, + { "Atom": { "atom": "96" } }, + { "Atom": { "atom": "104" } }, + { "Atom": { "atom": "112" } }, + { "Atom": { "atom": "120" } }, + { "Atom": { "atom": "128" } }, + { "Atom": { "atom": "136" } }, + { "Atom": { "atom": "144" } }, + { "Atom": { "atom": "152" } }, + { "Atom": { "atom": "160" } }, + { "Atom": { "atom": "168" } }, + { "Atom": { "atom": "176" } }, + { "Atom": { "atom": "184" } }, + { "Atom": { "atom": "192" } }, + { "Atom": { "atom": "200" } }, + { "Atom": { "atom": "208" } }, + { "Atom": { "atom": "216" } }, + { "Atom": { "atom": "224" } }, + { "Atom": { "atom": "232" } }, + { "Atom": { "atom": "240" } }, + { "Atom": { "atom": "248" } }, + { "Atom": { "atom": "256" } } + ] + } + }, + { "Atom": { "atom": "x" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "0" } }, + { "Atom": { "atom": "1" } }, + { "Atom": { "atom": "2" } }, + { "Atom": { "atom": "3" } }, + { "Atom": { "atom": "4" } }, + { "Atom": { "atom": "5" } }, + { "Atom": { "atom": "6" } }, + { "Atom": { "atom": "7" } }, + { "Atom": { "atom": "9" } }, + { "Atom": { "atom": "10" } }, + { "Atom": { "atom": "11" } }, + { "Atom": { "atom": "12" } }, + { "Atom": { "atom": "13" } }, + { "Atom": { "atom": "14" } }, + { "Atom": { "atom": "15" } }, + { "Atom": { "atom": "17" } }, + { "Atom": { "atom": "18" } }, + { "Atom": { "atom": "19" } }, + { "Atom": { "atom": "20" } }, + { "Atom": { "atom": "21" } }, + { "Atom": { "atom": "22" } }, + { "Atom": { "atom": "23" } }, + { "Atom": { "atom": "25" } }, + { "Atom": { "atom": "26" } }, + { "Atom": { "atom": "27" } }, + { "Atom": { "atom": "28" } }, + { "Atom": { "atom": "29" } }, + { "Atom": { "atom": "30" } }, + { "Atom": { "atom": "31" } }, + { "Atom": { "atom": "33" } }, + { "Atom": { "atom": "34" } }, + { "Atom": { "atom": "35" } }, + { "Atom": { "atom": "36" } }, + { "Atom": { "atom": "37" } }, + { "Atom": { "atom": "38" } }, + { "Atom": { "atom": "39" } }, + { "Atom": { "atom": "41" } }, + { "Atom": { "atom": "42" } }, + { "Atom": { "atom": "43" } }, + { "Atom": { "atom": "44" } }, + { "Atom": { "atom": "45" } }, + { "Atom": { "atom": "46" } }, + { "Atom": { "atom": "47" } }, + { "Atom": { "atom": "49" } }, + { "Atom": { "atom": "50" } }, + { "Atom": { "atom": "51" } }, + { "Atom": { "atom": "52" } }, + { "Atom": { "atom": "53" } }, + { "Atom": { "atom": "54" } }, + { "Atom": { "atom": "55" } }, + { "Atom": { "atom": "57" } }, + { "Atom": { "atom": "58" } }, + { "Atom": { "atom": "59" } }, + { "Atom": { "atom": "60" } }, + { "Atom": { "atom": "61" } }, + { "Atom": { "atom": "62" } }, + { "Atom": { "atom": "63" } }, + { "Atom": { "atom": "65" } }, + { "Atom": { "atom": "66" } }, + { "Atom": { "atom": "67" } }, + { "Atom": { "atom": "68" } }, + { "Atom": { "atom": "69" } }, + { "Atom": { "atom": "70" } }, + { "Atom": { "atom": "71" } }, + { "Atom": { "atom": "73" } }, + { "Atom": { "atom": "74" } }, + { "Atom": { "atom": "75" } }, + { "Atom": { "atom": "76" } }, + { "Atom": { "atom": "77" } }, + { "Atom": { "atom": "78" } }, + { "Atom": { "atom": "79" } } + ] + } + } + ] + } + } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "UintKeyword", + "identifier": "Identifier", + "definitions": [ + { + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "uint" } }, + { + "Optional": { + "value": { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } }, + { "Atom": { "atom": "88" } }, + { "Atom": { "atom": "96" } }, + { "Atom": { "atom": "104" } }, + { "Atom": { "atom": "112" } }, + { "Atom": { "atom": "120" } }, + { "Atom": { "atom": "128" } }, + { "Atom": { "atom": "136" } }, + { "Atom": { "atom": "144" } }, + { "Atom": { "atom": "152" } }, + { "Atom": { "atom": "160" } }, + { "Atom": { "atom": "168" } }, + { "Atom": { "atom": "176" } }, + { "Atom": { "atom": "184" } }, + { "Atom": { "atom": "192" } }, + { "Atom": { "atom": "200" } }, + { "Atom": { "atom": "208" } }, + { "Atom": { "atom": "216" } }, + { "Atom": { "atom": "224" } }, + { "Atom": { "atom": "232" } }, + { "Atom": { "atom": "240" } }, + { "Atom": { "atom": "248" } }, + { "Atom": { "atom": "256" } } + ] + } + } + } + } + ] + } + } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "UncheckedKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.8.0" } }, + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "unchecked" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "UsingKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "using" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "VarKeyword", + "identifier": "Identifier", + "definitions": [ + { "enabled": { "Till": { "till": "0.5.0" } }, "value": { "Atom": { "atom": "var" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "ViewKeyword", + "identifier": "Identifier", + "definitions": [ + { "enabled": { "From": { "from": "0.4.16" } }, "value": { "Atom": { "atom": "view" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "VirtualKeyword", + "identifier": "Identifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.6.0" } }, + "reserved": { "From": { "from": "0.6.0" } }, + "value": { "Atom": { "atom": "virtual" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "WeeksKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "weeks" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "WeiKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "wei" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "WhileKeyword", + "identifier": "Identifier", + "definitions": [{ "value": { "Atom": { "atom": "while" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YearsKeyword", + "identifier": "Identifier", + "definitions": [ + { "enabled": { "Till": { "till": "0.5.0" } }, "value": { "Atom": { "atom": "years" } } } + ] + } + } + } + ] + }, + { + "title": "Punctuation", + "items": [ + { + "Token": { "item": { "name": "OpenParen", "definitions": [{ "scanner": { "Atom": { "atom": "(" } } }] } } + }, + { + "Token": { "item": { "name": "CloseParen", "definitions": [{ "scanner": { "Atom": { "atom": ")" } } }] } } + }, + { + "Token": { + "item": { "name": "OpenBracket", "definitions": [{ "scanner": { "Atom": { "atom": "[" } } }] } + } + }, + { + "Token": { + "item": { "name": "CloseBracket", "definitions": [{ "scanner": { "Atom": { "atom": "]" } } }] } + } + }, + { + "Token": { "item": { "name": "OpenBrace", "definitions": [{ "scanner": { "Atom": { "atom": "{" } } }] } } + }, + { + "Token": { "item": { "name": "CloseBrace", "definitions": [{ "scanner": { "Atom": { "atom": "}" } } }] } } + }, + { "Token": { "item": { "name": "Comma", "definitions": [{ "scanner": { "Atom": { "atom": "," } } }] } } }, + { "Token": { "item": { "name": "Period", "definitions": [{ "scanner": { "Atom": { "atom": "." } } }] } } }, + { + "Token": { + "item": { "name": "QuestionMark", "definitions": [{ "scanner": { "Atom": { "atom": "?" } } }] } + } + }, + { + "Token": { "item": { "name": "Semicolon", "definitions": [{ "scanner": { "Atom": { "atom": ";" } } }] } } + }, + { "Token": { "item": { "name": "Colon", "definitions": [{ "scanner": { "Atom": { "atom": ":" } } }] } } }, + { + "Token": { + "item": { "name": "ColonEqual", "definitions": [{ "scanner": { "Atom": { "atom": ":=" } } }] } + } + }, + { "Token": { "item": { "name": "Equal", "definitions": [{ "scanner": { "Atom": { "atom": "=" } } }] } } }, + { + "Token": { + "item": { + "name": "EqualColon", + "definitions": [ + { "enabled": { "Till": { "till": "0.5.0" } }, "scanner": { "Atom": { "atom": "=:" } } } + ] + } + } + }, + { + "Token": { + "item": { "name": "EqualEqual", "definitions": [{ "scanner": { "Atom": { "atom": "==" } } }] } + } + }, + { + "Token": { + "item": { "name": "EqualGreaterThan", "definitions": [{ "scanner": { "Atom": { "atom": "=>" } } }] } + } + }, + { + "Token": { "item": { "name": "Asterisk", "definitions": [{ "scanner": { "Atom": { "atom": "*" } } }] } } + }, + { + "Token": { + "item": { "name": "AsteriskEqual", "definitions": [{ "scanner": { "Atom": { "atom": "*=" } } }] } + } + }, + { + "Token": { + "item": { "name": "AsteriskAsterisk", "definitions": [{ "scanner": { "Atom": { "atom": "**" } } }] } + } + }, + { "Token": { "item": { "name": "Bar", "definitions": [{ "scanner": { "Atom": { "atom": "|" } } }] } } }, + { + "Token": { "item": { "name": "BarEqual", "definitions": [{ "scanner": { "Atom": { "atom": "|=" } } }] } } + }, + { "Token": { "item": { "name": "BarBar", "definitions": [{ "scanner": { "Atom": { "atom": "||" } } }] } } }, + { + "Token": { "item": { "name": "Ampersand", "definitions": [{ "scanner": { "Atom": { "atom": "&" } } }] } } + }, + { + "Token": { + "item": { "name": "AmpersandEqual", "definitions": [{ "scanner": { "Atom": { "atom": "&=" } } }] } + } + }, + { + "Token": { + "item": { "name": "AmpersandAmpersand", "definitions": [{ "scanner": { "Atom": { "atom": "&&" } } }] } + } + }, + { + "Token": { "item": { "name": "LessThan", "definitions": [{ "scanner": { "Atom": { "atom": "<" } } }] } } + }, + { + "Token": { + "item": { "name": "LessThanEqual", "definitions": [{ "scanner": { "Atom": { "atom": "<=" } } }] } + } + }, + { + "Token": { + "item": { "name": "LessThanLessThan", "definitions": [{ "scanner": { "Atom": { "atom": "<<" } } }] } + } + }, + { + "Token": { + "item": { + "name": "LessThanLessThanEqual", + "definitions": [{ "scanner": { "Atom": { "atom": "<<=" } } }] + } + } + }, + { + "Token": { + "item": { "name": "GreaterThan", "definitions": [{ "scanner": { "Atom": { "atom": ">" } } }] } + } + }, + { + "Token": { + "item": { "name": "GreaterThanEqual", "definitions": [{ "scanner": { "Atom": { "atom": ">=" } } }] } + } + }, + { + "Token": { + "item": { + "name": "GreaterThanGreaterThan", + "definitions": [{ "scanner": { "Atom": { "atom": ">>" } } }] + } + } + }, + { + "Token": { + "item": { + "name": "GreaterThanGreaterThanEqual", + "definitions": [{ "scanner": { "Atom": { "atom": ">>=" } } }] + } + } + }, + { + "Token": { + "item": { + "name": "GreaterThanGreaterThanGreaterThan", + "definitions": [{ "scanner": { "Atom": { "atom": ">>>" } } }] + } + } + }, + { + "Token": { + "item": { + "name": "GreaterThanGreaterThanGreaterThanEqual", + "definitions": [{ "scanner": { "Atom": { "atom": ">>>=" } } }] + } + } + }, + { "Token": { "item": { "name": "Plus", "definitions": [{ "scanner": { "Atom": { "atom": "+" } } }] } } }, + { + "Token": { "item": { "name": "PlusEqual", "definitions": [{ "scanner": { "Atom": { "atom": "+=" } } }] } } + }, + { + "Token": { "item": { "name": "PlusPlus", "definitions": [{ "scanner": { "Atom": { "atom": "++" } } }] } } + }, + { "Token": { "item": { "name": "Minus", "definitions": [{ "scanner": { "Atom": { "atom": "-" } } }] } } }, + { + "Token": { + "item": { "name": "MinusEqual", "definitions": [{ "scanner": { "Atom": { "atom": "-=" } } }] } + } + }, + { + "Token": { + "item": { "name": "MinusMinus", "definitions": [{ "scanner": { "Atom": { "atom": "--" } } }] } + } + }, + { + "Token": { + "item": { "name": "MinusGreaterThan", "definitions": [{ "scanner": { "Atom": { "atom": "->" } } }] } + } + }, + { + "Token": { + "item": { + "name": "Slash", + "definitions": [ + { + "scanner": { + "TrailingContext": { + "scanner": { "Atom": { "atom": "/" } }, + "not_followed_by": { + "Choice": { + "scanners": [ + { "Atom": { "atom": "*" } }, + { "Atom": { "atom": "/" } }, + { "Atom": { "atom": "=" } } + ] + } + } + } + } + } + ] + } + } + }, + { + "Token": { + "item": { "name": "SlashEqual", "definitions": [{ "scanner": { "Atom": { "atom": "/=" } } }] } + } + }, + { "Token": { "item": { "name": "Percent", "definitions": [{ "scanner": { "Atom": { "atom": "%" } } }] } } }, + { + "Token": { + "item": { "name": "PercentEqual", "definitions": [{ "scanner": { "Atom": { "atom": "%=" } } }] } + } + }, + { "Token": { "item": { "name": "Bang", "definitions": [{ "scanner": { "Atom": { "atom": "!" } } }] } } }, + { + "Token": { "item": { "name": "BangEqual", "definitions": [{ "scanner": { "Atom": { "atom": "!=" } } }] } } + }, + { "Token": { "item": { "name": "Caret", "definitions": [{ "scanner": { "Atom": { "atom": "^" } } }] } } }, + { + "Token": { + "item": { "name": "CaretEqual", "definitions": [{ "scanner": { "Atom": { "atom": "^=" } } }] } + } + }, + { "Token": { "item": { "name": "Tilde", "definitions": [{ "scanner": { "Atom": { "atom": "~" } } }] } } } + ] + } + ] + }, + { + "title": "Definitions", + "topics": [ + { + "title": "Contracts", + "items": [ + { + "Struct": { + "item": { + "name": "ContractDefinition", + "error_recovery": { "delimiters": { "open": "open_brace", "close": "close_brace" } }, + "fields": { + "abstract_keyword": { + "Optional": { "reference": "AbstractKeyword", "enabled": { "From": { "from": "0.6.0" } } } + }, + "contract_keyword": { "Required": { "reference": "ContractKeyword" } }, + "name": { "Required": { "reference": "Identifier" } }, + "inheritance": { "Optional": { "reference": "InheritanceSpecifier" } }, + "open_brace": { "Required": { "reference": "OpenBrace" } }, + "members": { "Required": { "reference": "ContractMembers" } }, + "close_brace": { "Required": { "reference": "CloseBrace" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "InheritanceSpecifier", + "fields": { + "is_keyword": { "Required": { "reference": "IsKeyword" } }, + "types": { "Required": { "reference": "InheritanceTypes" } } + } + } + } + }, + { + "Separated": { + "item": { "name": "InheritanceTypes", "reference": "InheritanceType", "separator": "Comma" } + } + }, + { + "Struct": { + "item": { + "name": "InheritanceType", + "fields": { + "type_name": { "Required": { "reference": "IdentifierPath" } }, + "arguments": { "Optional": { "reference": "ArgumentsDeclaration" } } + } + } + } + }, + { + "Repeated": { "item": { "name": "ContractMembers", "reference": "ContractMember", "allow_empty": true } } + }, + { + "Enum": { + "item": { + "name": "ContractMember", + "variants": [ + { "reference": "UsingDirective" }, + { "reference": "FunctionDefinition" }, + { "reference": "ConstructorDefinition", "enabled": { "From": { "from": "0.4.22" } } }, + { "reference": "ReceiveFunctionDefinition", "enabled": { "From": { "from": "0.6.0" } } }, + { "reference": "FallbackFunctionDefinition", "enabled": { "From": { "from": "0.6.0" } } }, + { "reference": "UnnamedFunctionDefinition", "enabled": { "Till": { "till": "0.6.0" } } }, + { "reference": "ModifierDefinition" }, + { "reference": "StructDefinition" }, + { "reference": "EnumDefinition" }, + { "reference": "EventDefinition" }, + { "reference": "ErrorDefinition", "enabled": { "From": { "from": "0.8.4" } } }, + { "reference": "UserDefinedValueTypeDefinition", "enabled": { "From": { "from": "0.8.8" } } }, + { "reference": "StateVariableDefinition" } + ] + } + } + } + ] + }, + { + "title": "Interfaces", + "items": [ + { + "Struct": { + "item": { + "name": "InterfaceDefinition", + "error_recovery": { "delimiters": { "open": "open_brace", "close": "close_brace" } }, + "fields": { + "interface_keyword": { "Required": { "reference": "InterfaceKeyword" } }, + "name": { "Required": { "reference": "Identifier" } }, + "inheritance": { "Optional": { "reference": "InheritanceSpecifier" } }, + "open_brace": { "Required": { "reference": "OpenBrace" } }, + "members": { "Required": { "reference": "InterfaceMembers" } }, + "close_brace": { "Required": { "reference": "CloseBrace" } } + } + } + } + }, + { + "Repeated": { "item": { "name": "InterfaceMembers", "reference": "ContractMember", "allow_empty": true } } + } + ] + }, + { + "title": "Libraries", + "items": [ + { + "Struct": { + "item": { + "name": "LibraryDefinition", + "error_recovery": { "delimiters": { "open": "open_brace", "close": "close_brace" } }, + "fields": { + "library_keyword": { "Required": { "reference": "LibraryKeyword" } }, + "name": { "Required": { "reference": "Identifier" } }, + "open_brace": { "Required": { "reference": "OpenBrace" } }, + "members": { "Required": { "reference": "LibraryMembers" } }, + "close_brace": { "Required": { "reference": "CloseBrace" } } + } + } + } + }, + { "Repeated": { "item": { "name": "LibraryMembers", "reference": "ContractMember", "allow_empty": true } } } + ] + }, + { + "title": "Structs", + "items": [ + { + "Struct": { + "item": { + "name": "StructDefinition", + "error_recovery": { "delimiters": { "open": "open_brace", "close": "close_brace" } }, + "fields": { + "struct_keyword": { "Required": { "reference": "StructKeyword" } }, + "name": { "Required": { "reference": "Identifier" } }, + "open_brace": { "Required": { "reference": "OpenBrace" } }, + "members": { "Required": { "reference": "StructMembers" } }, + "close_brace": { "Required": { "reference": "CloseBrace" } } + } + } + } + }, + { "Repeated": { "item": { "name": "StructMembers", "reference": "StructMember", "allow_empty": true } } }, + { + "Struct": { + "item": { + "name": "StructMember", + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "type_name": { "Required": { "reference": "TypeName" } }, + "name": { "Required": { "reference": "Identifier" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + } + ] + }, + { + "title": "Enums", + "items": [ + { + "Struct": { + "item": { + "name": "EnumDefinition", + "error_recovery": { "delimiters": { "open": "open_brace", "close": "close_brace" } }, + "fields": { + "enum_keyword": { "Required": { "reference": "EnumKeyword" } }, + "name": { "Required": { "reference": "Identifier" } }, + "open_brace": { "Required": { "reference": "OpenBrace" } }, + "members": { "Required": { "reference": "EnumMembers" } }, + "close_brace": { "Required": { "reference": "CloseBrace" } } + } + } + } + }, + { + "Separated": { + "item": { "name": "EnumMembers", "reference": "Identifier", "separator": "Comma", "allow_empty": true } + } + } + ] + }, + { + "title": "Constants", + "items": [ + { + "Struct": { + "item": { + "name": "ConstantDefinition", + "enabled": { "From": { "from": "0.7.4" } }, + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "type_name": { "Required": { "reference": "TypeName" } }, + "constant_keyword": { "Required": { "reference": "ConstantKeyword" } }, + "name": { "Required": { "reference": "Identifier" } }, + "equal": { "Required": { "reference": "Equal" } }, + "value": { "Required": { "reference": "Expression" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + } + ] + }, + { + "title": "State Variables", + "items": [ + { + "Struct": { + "item": { + "name": "StateVariableDefinition", + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "type_name": { "Required": { "reference": "TypeName" } }, + "attributes": { "Required": { "reference": "StateVariableAttributes" } }, + "name": { "Required": { "reference": "Identifier" } }, + "value": { "Optional": { "reference": "StateVariableDefinitionValue" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "StateVariableDefinitionValue", + "fields": { + "equal": { "Required": { "reference": "Equal" } }, + "value": { "Required": { "reference": "Expression" } } + } + } + } + }, + { + "Repeated": { + "item": { + "name": "StateVariableAttributes", + "reference": "StateVariableAttribute", + "allow_empty": true + } + } + }, + { + "Enum": { + "item": { + "name": "StateVariableAttribute", + "variants": [ + { "reference": "OverrideSpecifier", "enabled": { "From": { "from": "0.6.0" } } }, + { "reference": "ConstantKeyword" }, + { "reference": "InternalKeyword" }, + { "reference": "PrivateKeyword" }, + { "reference": "PublicKeyword" }, + { "reference": "ImmutableKeyword", "enabled": { "From": { "from": "0.6.5" } } }, + { "reference": "TransientKeyword", "enabled": { "From": { "from": "0.8.27" } } } + ] + } + } + } + ] + }, + { + "title": "Functions", + "items": [ + { + "Struct": { + "item": { + "name": "FunctionDefinition", + "fields": { + "function_keyword": { "Required": { "reference": "FunctionKeyword" } }, + "name": { "Required": { "reference": "FunctionName" } }, + "parameters": { "Required": { "reference": "ParametersDeclaration" } }, + "attributes": { "Required": { "reference": "FunctionAttributes" } }, + "returns": { "Optional": { "reference": "ReturnsDeclaration" } }, + "body": { "Required": { "reference": "FunctionBody" } } + } + } + } + }, + { + "Enum": { + "item": { + "name": "FunctionName", + "variants": [ + { "reference": "Identifier" }, + { "reference": "FallbackKeyword" }, + { "reference": "ReceiveKeyword" } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "ParametersDeclaration", + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "open_paren": { "Required": { "reference": "OpenParen" } }, + "parameters": { "Required": { "reference": "Parameters" } }, + "close_paren": { "Required": { "reference": "CloseParen" } } + } + } + } + }, + { + "Separated": { + "item": { "name": "Parameters", "reference": "Parameter", "separator": "Comma", "allow_empty": true } + } + }, + { + "Struct": { + "item": { + "name": "Parameter", + "fields": { + "type_name": { "Required": { "reference": "TypeName" } }, + "storage_location": { "Optional": { "reference": "StorageLocation" } }, + "name": { "Optional": { "reference": "Identifier" } } + } + } + } + }, + { + "Repeated": { + "item": { "name": "FunctionAttributes", "reference": "FunctionAttribute", "allow_empty": true } + } + }, + { + "Enum": { + "item": { + "name": "FunctionAttribute", + "variants": [ + { "reference": "ModifierInvocation" }, + { "reference": "OverrideSpecifier", "enabled": { "From": { "from": "0.6.0" } } }, + { "reference": "ConstantKeyword", "enabled": { "Till": { "till": "0.5.0" } } }, + { "reference": "ExternalKeyword" }, + { "reference": "InternalKeyword" }, + { "reference": "PayableKeyword" }, + { "reference": "PrivateKeyword" }, + { "reference": "PublicKeyword" }, + { "reference": "PureKeyword", "enabled": { "From": { "from": "0.4.16" } } }, + { "reference": "ViewKeyword", "enabled": { "From": { "from": "0.4.16" } } }, + { "reference": "VirtualKeyword", "enabled": { "From": { "from": "0.6.0" } } } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "OverrideSpecifier", + "enabled": { "From": { "from": "0.6.0" } }, + "fields": { + "override_keyword": { "Required": { "reference": "OverrideKeyword" } }, + "overridden": { "Optional": { "reference": "OverridePathsDeclaration" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "OverridePathsDeclaration", + "enabled": { "From": { "from": "0.6.0" } }, + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "open_paren": { "Required": { "reference": "OpenParen" } }, + "paths": { "Required": { "reference": "OverridePaths" } }, + "close_paren": { "Required": { "reference": "CloseParen" } } + } + } + } + }, + { + "Separated": { + "item": { + "name": "OverridePaths", + "reference": "IdentifierPath", + "separator": "Comma", + "enabled": { "From": { "from": "0.6.0" } } + } + } + }, + { + "Struct": { + "item": { + "name": "ReturnsDeclaration", + "fields": { + "returns_keyword": { "Required": { "reference": "ReturnsKeyword" } }, + "variables": { "Required": { "reference": "ParametersDeclaration" } } + } + } + } + }, + { + "Enum": { + "item": { "name": "FunctionBody", "variants": [{ "reference": "Block" }, { "reference": "Semicolon" }] } + } + }, + { + "Struct": { + "item": { + "name": "ConstructorDefinition", + "enabled": { "From": { "from": "0.4.22" } }, + "fields": { + "constructor_keyword": { "Required": { "reference": "ConstructorKeyword" } }, + "parameters": { "Required": { "reference": "ParametersDeclaration" } }, + "attributes": { "Required": { "reference": "ConstructorAttributes" } }, + "body": { "Required": { "reference": "Block" } } + } + } + } + }, + { + "Repeated": { + "item": { + "name": "ConstructorAttributes", + "reference": "ConstructorAttribute", + "enabled": { "From": { "from": "0.4.22" } }, + "allow_empty": true + } + } + }, + { + "Enum": { + "item": { + "name": "ConstructorAttribute", + "enabled": { "From": { "from": "0.4.22" } }, + "variants": [ + { "reference": "ModifierInvocation" }, + { "reference": "InternalKeyword" }, + { "reference": "OverrideKeyword", "enabled": { "Range": { "from": "0.6.0", "till": "0.6.7" } } }, + { "reference": "PayableKeyword" }, + { "reference": "PublicKeyword" }, + { "reference": "VirtualKeyword", "enabled": { "Range": { "from": "0.6.0", "till": "0.6.7" } } } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "UnnamedFunctionDefinition", + "enabled": { "Till": { "till": "0.6.0" } }, + "fields": { + "function_keyword": { "Required": { "reference": "FunctionKeyword" } }, + "parameters": { "Required": { "reference": "ParametersDeclaration" } }, + "attributes": { "Required": { "reference": "UnnamedFunctionAttributes" } }, + "body": { "Required": { "reference": "FunctionBody" } } + } + } + } + }, + { + "Repeated": { + "item": { + "name": "UnnamedFunctionAttributes", + "reference": "UnnamedFunctionAttribute", + "enabled": { "Till": { "till": "0.6.0" } }, + "allow_empty": true + } + } + }, + { + "Enum": { + "item": { + "name": "UnnamedFunctionAttribute", + "enabled": { "Till": { "till": "0.6.0" } }, + "variants": [ + { "reference": "ModifierInvocation" }, + { "reference": "ConstantKeyword", "enabled": { "Till": { "till": "0.5.0" } } }, + { "reference": "ExternalKeyword" }, + { "reference": "InternalKeyword", "enabled": { "Till": { "till": "0.5.0" } } }, + { "reference": "PayableKeyword" }, + { "reference": "PrivateKeyword", "enabled": { "Till": { "till": "0.5.0" } } }, + { "reference": "PublicKeyword", "enabled": { "Till": { "till": "0.5.0" } } }, + { "reference": "PureKeyword", "enabled": { "Range": { "from": "0.4.16", "till": "0.6.0" } } }, + { "reference": "ViewKeyword", "enabled": { "Range": { "from": "0.4.16", "till": "0.6.0" } } } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "FallbackFunctionDefinition", + "enabled": { "From": { "from": "0.6.0" } }, + "fields": { + "fallback_keyword": { "Required": { "reference": "FallbackKeyword" } }, + "parameters": { "Required": { "reference": "ParametersDeclaration" } }, + "attributes": { "Required": { "reference": "FallbackFunctionAttributes" } }, + "returns": { "Optional": { "reference": "ReturnsDeclaration" } }, + "body": { "Required": { "reference": "FunctionBody" } } + } + } + } + }, + { + "Repeated": { + "item": { + "name": "FallbackFunctionAttributes", + "reference": "FallbackFunctionAttribute", + "enabled": { "From": { "from": "0.6.0" } }, + "allow_empty": true + } + } + }, + { + "Enum": { + "item": { + "name": "FallbackFunctionAttribute", + "enabled": { "From": { "from": "0.6.0" } }, + "variants": [ + { "reference": "ModifierInvocation" }, + { "reference": "OverrideSpecifier" }, + { "reference": "ExternalKeyword" }, + { "reference": "PayableKeyword" }, + { "reference": "PureKeyword" }, + { "reference": "ViewKeyword" }, + { "reference": "VirtualKeyword" } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "ReceiveFunctionDefinition", + "enabled": { "From": { "from": "0.6.0" } }, + "fields": { + "receive_keyword": { "Required": { "reference": "ReceiveKeyword" } }, + "parameters": { "Required": { "reference": "ParametersDeclaration" } }, + "attributes": { "Required": { "reference": "ReceiveFunctionAttributes" } }, + "body": { "Required": { "reference": "FunctionBody" } } + } + } + } + }, + { + "Repeated": { + "item": { + "name": "ReceiveFunctionAttributes", + "reference": "ReceiveFunctionAttribute", + "enabled": { "From": { "from": "0.6.0" } }, + "allow_empty": true + } + } + }, + { + "Enum": { + "item": { + "name": "ReceiveFunctionAttribute", + "enabled": { "From": { "from": "0.6.0" } }, + "variants": [ + { "reference": "ModifierInvocation" }, + { "reference": "OverrideSpecifier" }, + { "reference": "ExternalKeyword" }, + { "reference": "PayableKeyword" }, + { "reference": "VirtualKeyword" } + ] + } + } + } + ] + }, + { + "title": "Modifiers", + "items": [ + { + "Struct": { + "item": { + "name": "ModifierDefinition", + "fields": { + "modifier_keyword": { "Required": { "reference": "ModifierKeyword" } }, + "name": { "Required": { "reference": "Identifier" } }, + "parameters": { "Optional": { "reference": "ParametersDeclaration" } }, + "attributes": { "Required": { "reference": "ModifierAttributes" } }, + "body": { "Required": { "reference": "FunctionBody" } } + } + } + } + }, + { + "Repeated": { + "item": { "name": "ModifierAttributes", "reference": "ModifierAttribute", "allow_empty": true } + } + }, + { + "Enum": { + "item": { + "name": "ModifierAttribute", + "variants": [ + { "reference": "OverrideSpecifier", "enabled": { "From": { "from": "0.6.0" } } }, + { "reference": "VirtualKeyword", "enabled": { "From": { "from": "0.6.0" } } } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "ModifierInvocation", + "fields": { + "name": { "Required": { "reference": "IdentifierPath" } }, + "arguments": { "Optional": { "reference": "ArgumentsDeclaration" } } + } + } + } + } + ] + }, + { + "title": "Events", + "items": [ + { + "Struct": { + "item": { + "name": "EventDefinition", + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "event_keyword": { "Required": { "reference": "EventKeyword" } }, + "name": { "Required": { "reference": "Identifier" } }, + "parameters": { "Required": { "reference": "EventParametersDeclaration" } }, + "anonymous_keyword": { "Optional": { "reference": "AnonymousKeyword" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "EventParametersDeclaration", + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "open_paren": { "Required": { "reference": "OpenParen" } }, + "parameters": { "Required": { "reference": "EventParameters" } }, + "close_paren": { "Required": { "reference": "CloseParen" } } + } + } + } + }, + { + "Separated": { + "item": { + "name": "EventParameters", + "reference": "EventParameter", + "separator": "Comma", + "allow_empty": true + } + } + }, + { + "Struct": { + "item": { + "name": "EventParameter", + "fields": { + "type_name": { "Required": { "reference": "TypeName" } }, + "indexed_keyword": { "Optional": { "reference": "IndexedKeyword" } }, + "name": { "Optional": { "reference": "Identifier" } } + } + } + } + } + ] + }, + { + "title": "User Defined Value Types", + "items": [ + { + "Struct": { + "item": { + "name": "UserDefinedValueTypeDefinition", + "enabled": { "From": { "from": "0.8.8" } }, + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "type_keyword": { "Required": { "reference": "TypeKeyword" } }, + "name": { "Required": { "reference": "Identifier" } }, + "is_keyword": { "Required": { "reference": "IsKeyword" } }, + "value_type": { "Required": { "reference": "ElementaryType" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + } + ] + }, + { + "title": "Errors", + "items": [ + { + "Struct": { + "item": { + "name": "ErrorDefinition", + "enabled": { "From": { "from": "0.8.4" } }, + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "error_keyword": { "Required": { "reference": "ErrorKeyword" } }, + "name": { "Required": { "reference": "Identifier" } }, + "members": { "Required": { "reference": "ErrorParametersDeclaration" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "ErrorParametersDeclaration", + "enabled": { "From": { "from": "0.8.4" } }, + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "open_paren": { "Required": { "reference": "OpenParen" } }, + "parameters": { "Required": { "reference": "ErrorParameters" } }, + "close_paren": { "Required": { "reference": "CloseParen" } } + } + } + } + }, + { + "Separated": { + "item": { + "name": "ErrorParameters", + "reference": "ErrorParameter", + "separator": "Comma", + "enabled": { "From": { "from": "0.8.4" } }, + "allow_empty": true + } + } + }, + { + "Struct": { + "item": { + "name": "ErrorParameter", + "enabled": { "From": { "from": "0.8.4" } }, + "fields": { + "type_name": { "Required": { "reference": "TypeName" } }, + "name": { "Optional": { "reference": "Identifier" } } + } + } + } + } + ] + } + ] + }, + { + "title": "Types", + "topics": [ + { + "title": "Advanced Types", + "items": [ + { + "Precedence": { + "item": { + "name": "TypeName", + "precedence_expressions": [ + { + "name": "ArrayTypeName", + "operators": [ + { + "model": "Postfix", + "error_recovery": { "delimiters": { "open": "open_bracket", "close": "close_bracket" } }, + "fields": { + "open_bracket": { "Required": { "reference": "OpenBracket" } }, + "index": { "Optional": { "reference": "Expression" } }, + "close_bracket": { "Required": { "reference": "CloseBracket" } } + } + } + ] + } + ], + "primary_expressions": [ + { "reference": "FunctionType" }, + { "reference": "MappingType" }, + { "reference": "ElementaryType" }, + { "reference": "IdentifierPath" } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "FunctionType", + "fields": { + "function_keyword": { "Required": { "reference": "FunctionKeyword" } }, + "parameters": { "Required": { "reference": "ParametersDeclaration" } }, + "attributes": { "Required": { "reference": "FunctionTypeAttributes" } }, + "returns": { "Optional": { "reference": "ReturnsDeclaration" } } + } + } + } + }, + { + "Repeated": { + "item": { "name": "FunctionTypeAttributes", "reference": "FunctionTypeAttribute", "allow_empty": true } + } + }, + { + "Enum": { + "item": { + "name": "FunctionTypeAttribute", + "variants": [ + { "reference": "InternalKeyword" }, + { "reference": "ExternalKeyword" }, + { "reference": "PrivateKeyword" }, + { "reference": "PublicKeyword" }, + { "reference": "ConstantKeyword", "enabled": { "Till": { "till": "0.5.0" } } }, + { "reference": "PureKeyword", "enabled": { "From": { "from": "0.4.16" } } }, + { "reference": "ViewKeyword", "enabled": { "From": { "from": "0.4.16" } } }, + { "reference": "PayableKeyword" } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "MappingType", + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "mapping_keyword": { "Required": { "reference": "MappingKeyword" } }, + "open_paren": { "Required": { "reference": "OpenParen" } }, + "key_type": { "Required": { "reference": "MappingKey" } }, + "equal_greater_than": { "Required": { "reference": "EqualGreaterThan" } }, + "value_type": { "Required": { "reference": "MappingValue" } }, + "close_paren": { "Required": { "reference": "CloseParen" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "MappingKey", + "fields": { + "key_type": { "Required": { "reference": "MappingKeyType" } }, + "name": { "Optional": { "reference": "Identifier", "enabled": { "From": { "from": "0.8.18" } } } } + } + } + } + }, + { + "Enum": { + "item": { + "name": "MappingKeyType", + "variants": [{ "reference": "ElementaryType" }, { "reference": "IdentifierPath" }] + } + } + }, + { + "Struct": { + "item": { + "name": "MappingValue", + "fields": { + "type_name": { "Required": { "reference": "TypeName" } }, + "name": { "Optional": { "reference": "Identifier", "enabled": { "From": { "from": "0.8.18" } } } } + } + } + } + } + ] + }, + { + "title": "Elementary Types", + "items": [ + { + "Enum": { + "item": { + "name": "ElementaryType", + "variants": [ + { "reference": "BoolKeyword" }, + { "reference": "ByteKeyword", "enabled": { "Till": { "till": "0.8.0" } } }, + { "reference": "StringKeyword" }, + { "reference": "AddressType" }, + { "reference": "BytesKeyword" }, + { "reference": "IntKeyword" }, + { "reference": "UintKeyword" }, + { "reference": "FixedKeyword" }, + { "reference": "UfixedKeyword" } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "AddressType", + "fields": { + "address_keyword": { "Required": { "reference": "AddressKeyword" } }, + "payable_keyword": { "Optional": { "reference": "PayableKeyword" } } + } + } + } + } + ] + } + ] + }, + { + "title": "Statements", + "topics": [ + { + "title": "Blocks", + "items": [ + { + "Struct": { + "item": { + "name": "Block", + "error_recovery": { "delimiters": { "open": "open_brace", "close": "close_brace" } }, + "fields": { + "open_brace": { "Required": { "reference": "OpenBrace" } }, + "statements": { "Required": { "reference": "Statements" } }, + "close_brace": { "Required": { "reference": "CloseBrace" } } + } + } + } + }, + { "Repeated": { "item": { "name": "Statements", "reference": "Statement", "allow_empty": true } } }, + { + "Enum": { + "item": { + "name": "Statement", + "variants": [ + { "reference": "IfStatement" }, + { "reference": "ForStatement" }, + { "reference": "WhileStatement" }, + { "reference": "DoWhileStatement" }, + { "reference": "ContinueStatement" }, + { "reference": "BreakStatement" }, + { "reference": "ReturnStatement" }, + { "reference": "ThrowStatement", "enabled": { "Till": { "till": "0.5.0" } } }, + { "reference": "EmitStatement", "enabled": { "From": { "from": "0.4.21" } } }, + { "reference": "TryStatement", "enabled": { "From": { "from": "0.6.0" } } }, + { "reference": "RevertStatement", "enabled": { "From": { "from": "0.8.4" } } }, + { "reference": "AssemblyStatement" }, + { "reference": "Block" }, + { "reference": "UncheckedBlock", "enabled": { "From": { "from": "0.8.0" } } }, + { "reference": "TupleDeconstructionStatement" }, + { "reference": "VariableDeclarationStatement" }, + { "reference": "ExpressionStatement" } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "UncheckedBlock", + "enabled": { "From": { "from": "0.8.0" } }, + "fields": { + "unchecked_keyword": { "Required": { "reference": "UncheckedKeyword" } }, + "block": { "Required": { "reference": "Block" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "ExpressionStatement", + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "expression": { "Required": { "reference": "Expression" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "AssemblyStatement", + "fields": { + "assembly_keyword": { "Required": { "reference": "AssemblyKeyword" } }, + "label": { "Optional": { "reference": "StringLiteral" } }, + "flags": { "Optional": { "reference": "AssemblyFlagsDeclaration" } }, + "body": { "Required": { "reference": "YulBlock" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "AssemblyFlagsDeclaration", + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "open_paren": { "Required": { "reference": "OpenParen" } }, + "flags": { "Required": { "reference": "AssemblyFlags" } }, + "close_paren": { "Required": { "reference": "CloseParen" } } + } + } + } + }, + { "Separated": { "item": { "name": "AssemblyFlags", "reference": "StringLiteral", "separator": "Comma" } } } + ] + }, + { + "title": "Declaration Statements", + "items": [ + { + "Struct": { + "item": { + "name": "TupleDeconstructionStatement", + "error_recovery": { + "terminator": "semicolon", + "delimiters": { "open": "open_paren", "close": "close_paren" } + }, + "fields": { + "var_keyword": { + "Optional": { "reference": "VarKeyword", "enabled": { "Till": { "till": "0.5.0" } } } + }, + "open_paren": { "Required": { "reference": "OpenParen" } }, + "elements": { "Required": { "reference": "TupleDeconstructionElements" } }, + "close_paren": { "Required": { "reference": "CloseParen" } }, + "equal": { "Required": { "reference": "Equal" } }, + "expression": { "Required": { "reference": "Expression" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + }, + { + "Separated": { + "item": { + "name": "TupleDeconstructionElements", + "reference": "TupleDeconstructionElement", + "separator": "Comma" + } + } + }, + { + "Struct": { + "item": { + "name": "TupleDeconstructionElement", + "fields": { "member": { "Optional": { "reference": "TupleMember" } } } + } + } + }, + { + "Enum": { + "item": { + "name": "TupleMember", + "variants": [{ "reference": "TypedTupleMember" }, { "reference": "UntypedTupleMember" }] + } + } + }, + { + "Struct": { + "item": { + "name": "TypedTupleMember", + "fields": { + "type_name": { "Required": { "reference": "TypeName" } }, + "storage_location": { "Optional": { "reference": "StorageLocation" } }, + "name": { "Required": { "reference": "Identifier" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "UntypedTupleMember", + "fields": { + "storage_location": { "Optional": { "reference": "StorageLocation" } }, + "name": { "Required": { "reference": "Identifier" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "VariableDeclarationStatement", + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "variable_type": { "Required": { "reference": "VariableDeclarationType" } }, + "storage_location": { "Optional": { "reference": "StorageLocation" } }, + "name": { "Required": { "reference": "Identifier" } }, + "value": { "Optional": { "reference": "VariableDeclarationValue" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + }, + { + "Enum": { + "item": { + "name": "VariableDeclarationType", + "variants": [ + { "reference": "TypeName" }, + { "reference": "VarKeyword", "enabled": { "Till": { "till": "0.5.0" } } } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "VariableDeclarationValue", + "fields": { + "equal": { "Required": { "reference": "Equal" } }, + "expression": { "Required": { "reference": "Expression" } } + } + } + } + }, + { + "Enum": { + "item": { + "name": "StorageLocation", + "variants": [ + { "reference": "MemoryKeyword" }, + { "reference": "StorageKeyword" }, + { "reference": "CallDataKeyword", "enabled": { "From": { "from": "0.5.0" } } } + ] + } + } + } + ] + }, + { + "title": "Control Statements", + "items": [ + { + "Struct": { + "item": { + "name": "IfStatement", + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "if_keyword": { "Required": { "reference": "IfKeyword" } }, + "open_paren": { "Required": { "reference": "OpenParen" } }, + "condition": { "Required": { "reference": "Expression" } }, + "close_paren": { "Required": { "reference": "CloseParen" } }, + "body": { "Required": { "reference": "Statement" } }, + "else_branch": { "Optional": { "reference": "ElseBranch" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "ElseBranch", + "fields": { + "else_keyword": { "Required": { "reference": "ElseKeyword" } }, + "body": { "Required": { "reference": "Statement" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "ForStatement", + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "for_keyword": { "Required": { "reference": "ForKeyword" } }, + "open_paren": { "Required": { "reference": "OpenParen" } }, + "initialization": { "Required": { "reference": "ForStatementInitialization" } }, + "condition": { "Required": { "reference": "ForStatementCondition" } }, + "iterator": { "Optional": { "reference": "Expression" } }, + "close_paren": { "Required": { "reference": "CloseParen" } }, + "body": { "Required": { "reference": "Statement" } } + } + } + } + }, + { + "Enum": { + "item": { + "name": "ForStatementInitialization", + "variants": [ + { "reference": "TupleDeconstructionStatement" }, + { "reference": "VariableDeclarationStatement" }, + { "reference": "ExpressionStatement" }, + { "reference": "Semicolon" } + ] + } + } + }, + { + "Enum": { + "item": { + "name": "ForStatementCondition", + "variants": [{ "reference": "ExpressionStatement" }, { "reference": "Semicolon" }] + } + } + }, + { + "Struct": { + "item": { + "name": "WhileStatement", + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "while_keyword": { "Required": { "reference": "WhileKeyword" } }, + "open_paren": { "Required": { "reference": "OpenParen" } }, + "condition": { "Required": { "reference": "Expression" } }, + "close_paren": { "Required": { "reference": "CloseParen" } }, + "body": { "Required": { "reference": "Statement" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "DoWhileStatement", + "error_recovery": { + "terminator": "semicolon", + "delimiters": { "open": "open_paren", "close": "close_paren" } + }, + "fields": { + "do_keyword": { "Required": { "reference": "DoKeyword" } }, + "body": { "Required": { "reference": "Statement" } }, + "while_keyword": { "Required": { "reference": "WhileKeyword" } }, + "open_paren": { "Required": { "reference": "OpenParen" } }, + "condition": { "Required": { "reference": "Expression" } }, + "close_paren": { "Required": { "reference": "CloseParen" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "ContinueStatement", + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "continue_keyword": { "Required": { "reference": "ContinueKeyword" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "BreakStatement", + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "break_keyword": { "Required": { "reference": "BreakKeyword" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "ReturnStatement", + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "return_keyword": { "Required": { "reference": "ReturnKeyword" } }, + "expression": { "Optional": { "reference": "Expression" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "EmitStatement", + "enabled": { "From": { "from": "0.4.21" } }, + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "emit_keyword": { "Required": { "reference": "EmitKeyword" } }, + "event": { "Required": { "reference": "IdentifierPath" } }, + "arguments": { "Required": { "reference": "ArgumentsDeclaration" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + } + ] + }, + { + "title": "Error Handling", + "items": [ + { + "Struct": { + "item": { + "name": "TryStatement", + "enabled": { "From": { "from": "0.6.0" } }, + "fields": { + "try_keyword": { "Required": { "reference": "TryKeyword" } }, + "expression": { "Required": { "reference": "Expression" } }, + "returns": { "Optional": { "reference": "ReturnsDeclaration" } }, + "body": { "Required": { "reference": "Block" } }, + "catch_clauses": { "Required": { "reference": "CatchClauses" } } + } + } + } + }, + { + "Repeated": { + "item": { + "name": "CatchClauses", + "reference": "CatchClause", + "enabled": { "From": { "from": "0.6.0" } } + } + } + }, + { + "Struct": { + "item": { + "name": "CatchClause", + "enabled": { "From": { "from": "0.6.0" } }, + "fields": { + "catch_keyword": { "Required": { "reference": "CatchKeyword" } }, + "error": { "Optional": { "reference": "CatchClauseError" } }, + "body": { "Required": { "reference": "Block" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "CatchClauseError", + "enabled": { "From": { "from": "0.6.0" } }, + "fields": { + "name": { "Optional": { "reference": "Identifier" } }, + "parameters": { "Required": { "reference": "ParametersDeclaration" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "RevertStatement", + "enabled": { "From": { "from": "0.8.4" } }, + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "revert_keyword": { "Required": { "reference": "RevertKeyword" } }, + "error": { "Optional": { "reference": "IdentifierPath" } }, + "arguments": { "Required": { "reference": "ArgumentsDeclaration" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "ThrowStatement", + "enabled": { "Till": { "till": "0.5.0" } }, + "error_recovery": { "terminator": "semicolon" }, + "fields": { + "throw_keyword": { "Required": { "reference": "ThrowKeyword" } }, + "semicolon": { "Required": { "reference": "Semicolon" } } + } + } + } + } + ] + } + ] + }, + { + "title": "Expressions", + "topics": [ + { + "title": "Base Expressions", + "items": [ + { + "Precedence": { + "item": { + "name": "Expression", + "precedence_expressions": [ + { + "name": "AssignmentExpression", + "operators": [ + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "Equal" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "BarEqual" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "PlusEqual" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "MinusEqual" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "CaretEqual" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "SlashEqual" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "PercentEqual" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "AsteriskEqual" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "AmpersandEqual" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "LessThanLessThanEqual" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "GreaterThanGreaterThanEqual" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { + "operator": { "Required": { "reference": "GreaterThanGreaterThanGreaterThanEqual" } } + } + } + ] + }, + { + "name": "ConditionalExpression", + "operators": [ + { + "model": "Postfix", + "fields": { + "question_mark": { "Required": { "reference": "QuestionMark" } }, + "true_expression": { "Required": { "reference": "Expression" } }, + "colon": { "Required": { "reference": "Colon" } }, + "false_expression": { "Required": { "reference": "Expression" } } + } + } + ] + }, + { + "name": "OrExpression", + "operators": [ + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "BarBar" } } } + } + ] + }, + { + "name": "AndExpression", + "operators": [ + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "AmpersandAmpersand" } } } + } + ] + }, + { + "name": "EqualityExpression", + "operators": [ + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "EqualEqual" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "BangEqual" } } } + } + ] + }, + { + "name": "ComparisonExpression", + "operators": [ + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "LessThan" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "GreaterThan" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "LessThanEqual" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "GreaterThanEqual" } } } + } + ] + }, + { + "name": "BitwiseOrExpression", + "operators": [ + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "Bar" } } } + } + ] + }, + { + "name": "BitwiseXorExpression", + "operators": [ + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "Caret" } } } + } + ] + }, + { + "name": "BitwiseAndExpression", + "operators": [ + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "Ampersand" } } } + } + ] + }, + { + "name": "ShiftExpression", + "operators": [ + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "LessThanLessThan" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "GreaterThanGreaterThan" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "GreaterThanGreaterThanGreaterThan" } } } + } + ] + }, + { + "name": "AdditiveExpression", + "operators": [ + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "Plus" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "Minus" } } } + } + ] + }, + { + "name": "MultiplicativeExpression", + "operators": [ + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "Asterisk" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "Slash" } } } + }, + { + "model": "BinaryLeftAssociative", + "fields": { "operator": { "Required": { "reference": "Percent" } } } + } + ] + }, + { + "name": "ExponentiationExpression", + "operators": [ + { + "model": "BinaryLeftAssociative", + "enabled": { "Till": { "till": "0.8.0" } }, + "fields": { "operator": { "Required": { "reference": "AsteriskAsterisk" } } } + }, + { + "model": "BinaryRightAssociative", + "enabled": { "From": { "from": "0.8.0" } }, + "fields": { "operator": { "Required": { "reference": "AsteriskAsterisk" } } } + } + ] + }, + { + "name": "PostfixExpression", + "operators": [ + { "model": "Postfix", "fields": { "operator": { "Required": { "reference": "PlusPlus" } } } }, + { "model": "Postfix", "fields": { "operator": { "Required": { "reference": "MinusMinus" } } } } + ] + }, + { + "name": "PrefixExpression", + "operators": [ + { "model": "Prefix", "fields": { "operator": { "Required": { "reference": "PlusPlus" } } } }, + { "model": "Prefix", "fields": { "operator": { "Required": { "reference": "MinusMinus" } } } }, + { "model": "Prefix", "fields": { "operator": { "Required": { "reference": "Tilde" } } } }, + { "model": "Prefix", "fields": { "operator": { "Required": { "reference": "Bang" } } } }, + { "model": "Prefix", "fields": { "operator": { "Required": { "reference": "Minus" } } } }, + { + "model": "Prefix", + "enabled": { "Till": { "till": "0.5.0" } }, + "fields": { "operator": { "Required": { "reference": "Plus" } } } + }, + { + "model": "Prefix", + "fields": { "operator": { "Required": { "reference": "DeleteKeyword" } } } + } + ] + }, + { + "name": "FunctionCallExpression", + "operators": [ + { + "model": "Postfix", + "fields": { "arguments": { "Required": { "reference": "ArgumentsDeclaration" } } } + } + ] + }, + { + "name": "CallOptionsExpression", + "operators": [ + { + "model": "Postfix", + "enabled": { "From": { "from": "0.6.2" } }, + "error_recovery": { + "delimiters": { + "open": "open_brace", + "close": "close_brace", + "terminals_matched_acceptance_threshold": 2 + } + }, + "fields": { + "open_brace": { "Required": { "reference": "OpenBrace" } }, + "options": { "Required": { "reference": "CallOptions" } }, + "close_brace": { "Required": { "reference": "CloseBrace" } } + } + } + ] + }, + { + "name": "MemberAccessExpression", + "operators": [ + { + "model": "Postfix", + "fields": { + "period": { "Required": { "reference": "Period" } }, + "member": { "Required": { "reference": "Identifier" } } + } + } + ] + }, + { + "name": "IndexAccessExpression", + "operators": [ + { + "model": "Postfix", + "error_recovery": { "delimiters": { "open": "open_bracket", "close": "close_bracket" } }, + "fields": { + "open_bracket": { "Required": { "reference": "OpenBracket" } }, + "start": { "Optional": { "reference": "Expression" } }, + "end": { "Optional": { "reference": "IndexAccessEnd" } }, + "close_bracket": { "Required": { "reference": "CloseBracket" } } + } + } + ] + } + ], + "primary_expressions": [ + { "reference": "NewExpression" }, + { "reference": "TupleExpression" }, + { "reference": "TypeExpression", "enabled": { "From": { "from": "0.5.3" } } }, + { "reference": "ArrayExpression" }, + { "reference": "HexNumberExpression" }, + { "reference": "DecimalNumberExpression" }, + { "reference": "StringExpression" }, + { "reference": "ElementaryType" }, + { "reference": "PayableKeyword", "enabled": { "From": { "from": "0.6.0" } } }, + { "reference": "ThisKeyword" }, + { "reference": "SuperKeyword" }, + { "reference": "TrueKeyword" }, + { "reference": "FalseKeyword" }, + { "reference": "Identifier" } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "IndexAccessEnd", + "fields": { + "colon": { "Required": { "reference": "Colon" } }, + "end": { "Optional": { "reference": "Expression" } } + } + } + } + } + ] + }, + { + "title": "Function Calls", + "items": [ + { + "Enum": { + "item": { + "name": "ArgumentsDeclaration", + "variants": [ + { "reference": "PositionalArgumentsDeclaration" }, + { "reference": "NamedArgumentsDeclaration" } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "PositionalArgumentsDeclaration", + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "open_paren": { "Required": { "reference": "OpenParen" } }, + "arguments": { "Required": { "reference": "PositionalArguments" } }, + "close_paren": { "Required": { "reference": "CloseParen" } } + } + } + } + }, + { + "Separated": { + "item": { + "name": "PositionalArguments", + "reference": "Expression", + "separator": "Comma", + "allow_empty": true + } + } + }, + { + "Struct": { + "item": { + "name": "NamedArgumentsDeclaration", + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "open_paren": { "Required": { "reference": "OpenParen" } }, + "arguments": { "Optional": { "reference": "NamedArgumentGroup" } }, + "close_paren": { "Required": { "reference": "CloseParen" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "NamedArgumentGroup", + "error_recovery": { "delimiters": { "open": "open_brace", "close": "close_brace" } }, + "fields": { + "open_brace": { "Required": { "reference": "OpenBrace" } }, + "arguments": { "Required": { "reference": "NamedArguments" } }, + "close_brace": { "Required": { "reference": "CloseBrace" } } + } + } + } + }, + { + "Separated": { + "item": { + "name": "NamedArguments", + "reference": "NamedArgument", + "separator": "Comma", + "allow_empty": true + } + } + }, + { + "Separated": { + "item": { + "name": "CallOptions", + "reference": "NamedArgument", + "separator": "Comma", + "enabled": { "From": { "from": "0.6.2" } }, + "allow_empty": false + } + } + }, + { + "Struct": { + "item": { + "name": "NamedArgument", + "fields": { + "name": { "Required": { "reference": "Identifier" } }, + "colon": { "Required": { "reference": "Colon" } }, + "value": { "Required": { "reference": "Expression" } } + } + } + } + } + ] + }, + { + "title": "Primary Expressions", + "items": [ + { + "Struct": { + "item": { + "name": "TypeExpression", + "enabled": { "From": { "from": "0.5.3" } }, + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "type_keyword": { "Required": { "reference": "TypeKeyword" } }, + "open_paren": { "Required": { "reference": "OpenParen" } }, + "type_name": { "Required": { "reference": "TypeName" } }, + "close_paren": { "Required": { "reference": "CloseParen" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "NewExpression", + "fields": { + "new_keyword": { "Required": { "reference": "NewKeyword" } }, + "type_name": { "Required": { "reference": "TypeName" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "TupleExpression", + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "open_paren": { "Required": { "reference": "OpenParen" } }, + "items": { "Required": { "reference": "TupleValues" } }, + "close_paren": { "Required": { "reference": "CloseParen" } } + } + } + } + }, + { "Separated": { "item": { "name": "TupleValues", "reference": "TupleValue", "separator": "Comma" } } }, + { + "Struct": { + "item": { + "name": "TupleValue", + "fields": { "expression": { "Optional": { "reference": "Expression" } } } + } + } + }, + { + "Struct": { + "item": { + "name": "ArrayExpression", + "error_recovery": { "delimiters": { "open": "open_bracket", "close": "close_bracket" } }, + "fields": { + "open_bracket": { "Required": { "reference": "OpenBracket" } }, + "items": { "Required": { "reference": "ArrayValues" } }, + "close_bracket": { "Required": { "reference": "CloseBracket" } } + } + } + } + }, + { "Separated": { "item": { "name": "ArrayValues", "reference": "Expression", "separator": "Comma" } } } + ] + }, + { + "title": "Numbers", + "items": [ + { + "Struct": { + "item": { + "name": "HexNumberExpression", + "fields": { + "literal": { "Required": { "reference": "HexLiteral" } }, + "unit": { "Optional": { "reference": "NumberUnit", "enabled": { "Till": { "till": "0.5.0" } } } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "DecimalNumberExpression", + "fields": { + "literal": { "Required": { "reference": "DecimalLiteral" } }, + "unit": { "Optional": { "reference": "NumberUnit" } } + } + } + } + }, + { + "Token": { + "item": { + "name": "HexLiteral", + "definitions": [ + { + "scanner": { + "TrailingContext": { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "0x" } }, + { "OneOrMore": { "scanner": { "Fragment": { "reference": "HexCharacter" } } } }, + { + "ZeroOrMore": { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "_" } }, + { + "OneOrMore": { "scanner": { "Fragment": { "reference": "HexCharacter" } } } + } + ] + } + } + } + } + ] + } + }, + "not_followed_by": { "Fragment": { "reference": "IdentifierStart" } } + } + } + }, + { + "enabled": { "Till": { "till": "0.5.0" } }, + "scanner": { + "TrailingContext": { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "0X" } }, + { "OneOrMore": { "scanner": { "Fragment": { "reference": "HexCharacter" } } } }, + { + "ZeroOrMore": { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "_" } }, + { + "OneOrMore": { "scanner": { "Fragment": { "reference": "HexCharacter" } } } + } + ] + } + } + } + } + ] + } + }, + "not_followed_by": { "Fragment": { "reference": "IdentifierStart" } } + } + } + } + ] + } + } + }, + { + "Token": { + "item": { + "name": "DecimalLiteral", + "definitions": [ + { + "scanner": { + "TrailingContext": { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "." } }, + { "Fragment": { "reference": "DecimalDigits" } }, + { "Optional": { "scanner": { "Fragment": { "reference": "DecimalExponent" } } } } + ] + } + }, + "not_followed_by": { "Fragment": { "reference": "IdentifierStart" } } + } + } + }, + { + "scanner": { + "TrailingContext": { + "scanner": { + "Sequence": { + "scanners": [ + { + "TrailingContext": { + "scanner": { "Fragment": { "reference": "DecimalDigits" } }, + "not_followed_by": { "Atom": { "atom": "." } } + } + }, + { "Optional": { "scanner": { "Fragment": { "reference": "DecimalExponent" } } } } + ] + } + }, + "not_followed_by": { "Fragment": { "reference": "IdentifierStart" } } + } + } + }, + { + "enabled": { "Till": { "till": "0.5.0" } }, + "scanner": { + "TrailingContext": { + "scanner": { + "Sequence": { + "scanners": [ + { + "TrailingContext": { + "scanner": { + "Sequence": { + "scanners": [ + { "Fragment": { "reference": "DecimalDigits" } }, + { "Atom": { "atom": "." } } + ] + } + }, + "not_followed_by": { "Fragment": { "reference": "DecimalDigits" } } + } + }, + { "Optional": { "scanner": { "Fragment": { "reference": "DecimalExponent" } } } } + ] + } + }, + "not_followed_by": { "Fragment": { "reference": "IdentifierStart" } } + } + } + }, + { + "enabled": { "Till": { "till": "0.5.0" } }, + "scanner": { + "TrailingContext": { + "scanner": { + "Sequence": { + "scanners": [ + { "Fragment": { "reference": "DecimalDigits" } }, + { "Atom": { "atom": "." } }, + { "Fragment": { "reference": "DecimalDigits" } }, + { "Optional": { "scanner": { "Fragment": { "reference": "DecimalExponent" } } } } + ] + } + }, + "not_followed_by": { "Fragment": { "reference": "IdentifierStart" } } + } + } + }, + { + "enabled": { "From": { "from": "0.5.0" } }, + "scanner": { + "TrailingContext": { + "scanner": { + "Sequence": { + "scanners": [ + { "Fragment": { "reference": "DecimalDigits" } }, + { + "Optional": { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "." } }, + { "Fragment": { "reference": "DecimalDigits" } } + ] + } + } + } + }, + { "Optional": { "scanner": { "Fragment": { "reference": "DecimalExponent" } } } } + ] + } + }, + "not_followed_by": { "Fragment": { "reference": "IdentifierStart" } } + } + } + } + ] + } + } + }, + { + "Fragment": { + "item": { + "name": "DecimalDigits", + "scanner": { + "Sequence": { + "scanners": [ + { "OneOrMore": { "scanner": { "Range": { "inclusive_start": "0", "inclusive_end": "9" } } } }, + { + "ZeroOrMore": { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "_" } }, + { + "OneOrMore": { + "scanner": { "Range": { "inclusive_start": "0", "inclusive_end": "9" } } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "Fragment": { + "item": { + "name": "DecimalExponent", + "scanner": { + "Sequence": { + "scanners": [ + { "Choice": { "scanners": [{ "Atom": { "atom": "e" } }, { "Atom": { "atom": "E" } }] } }, + { "Optional": { "scanner": { "Atom": { "atom": "-" } } } }, + { "Fragment": { "reference": "DecimalDigits" } } + ] + } + } + } + } + }, + { + "Enum": { + "item": { + "name": "NumberUnit", + "variants": [ + { "reference": "WeiKeyword" }, + { "reference": "GweiKeyword", "enabled": { "From": { "from": "0.6.11" } } }, + { "reference": "SzaboKeyword", "enabled": { "Till": { "till": "0.7.0" } } }, + { "reference": "FinneyKeyword", "enabled": { "Till": { "till": "0.7.0" } } }, + { "reference": "EtherKeyword" }, + { "reference": "SecondsKeyword" }, + { "reference": "MinutesKeyword" }, + { "reference": "HoursKeyword" }, + { "reference": "DaysKeyword" }, + { "reference": "WeeksKeyword" }, + { "reference": "YearsKeyword", "enabled": { "Till": { "till": "0.5.0" } } } + ] + } + } + } + ] + }, + { + "title": "Strings", + "items": [ + { + "Enum": { + "item": { + "name": "StringExpression", + "variants": [ + { "reference": "StringLiteral", "enabled": { "Till": { "till": "0.5.14" } } }, + { "reference": "StringLiterals", "enabled": { "From": { "from": "0.5.14" } } }, + { "reference": "HexStringLiteral", "enabled": { "Till": { "till": "0.5.14" } } }, + { "reference": "HexStringLiterals", "enabled": { "From": { "from": "0.5.14" } } }, + { "reference": "UnicodeStringLiterals", "enabled": { "From": { "from": "0.7.0" } } } + ] + } + } + }, + { + "Repeated": { + "item": { + "name": "StringLiterals", + "reference": "StringLiteral", + "enabled": { "From": { "from": "0.5.14" } } + } + } + }, + { + "Enum": { + "item": { + "name": "StringLiteral", + "variants": [ + { "reference": "SingleQuotedStringLiteral" }, + { "reference": "DoubleQuotedStringLiteral" } + ] + } + } + }, + { + "Token": { + "item": { + "name": "SingleQuotedStringLiteral", + "definitions": [ + { + "enabled": { "Till": { "till": "0.4.25" } }, + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "'" } }, + { + "ZeroOrMore": { + "scanner": { + "Choice": { + "scanners": [ + { "Fragment": { "reference": "EscapeSequenceArbitrary" } }, + { "Not": { "chars": ["'", "\\", "\r", "\n"] } } + ] + } + } + } + }, + { "Atom": { "atom": "'" } } + ] + } + } + }, + { + "enabled": { "Range": { "from": "0.4.25", "till": "0.7.0" } }, + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "'" } }, + { + "ZeroOrMore": { + "scanner": { + "Choice": { + "scanners": [ + { "Fragment": { "reference": "EscapeSequence" } }, + { "Not": { "chars": ["'", "\\", "\r", "\n"] } } + ] + } + } + } + }, + { "Atom": { "atom": "'" } } + ] + } + } + }, + { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "'" } }, + { + "ZeroOrMore": { + "scanner": { + "Choice": { + "scanners": [ + { "Fragment": { "reference": "EscapeSequence" } }, + { "Range": { "inclusive_start": " ", "inclusive_end": "&" } }, + { "Range": { "inclusive_start": "(", "inclusive_end": "[" } }, + { "Range": { "inclusive_start": "]", "inclusive_end": "~" } } + ] + } + } + } + }, + { "Atom": { "atom": "'" } } + ] + } + } + } + ] + } + } + }, + { + "Token": { + "item": { + "name": "DoubleQuotedStringLiteral", + "definitions": [ + { + "enabled": { "Till": { "till": "0.4.25" } }, + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "\"" } }, + { + "ZeroOrMore": { + "scanner": { + "Choice": { + "scanners": [ + { "Fragment": { "reference": "EscapeSequenceArbitrary" } }, + { "Not": { "chars": ["\"", "\\", "\r", "\n"] } } + ] + } + } + } + }, + { "Atom": { "atom": "\"" } } + ] + } + } + }, + { + "enabled": { "Range": { "from": "0.4.25", "till": "0.7.0" } }, + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "\"" } }, + { + "ZeroOrMore": { + "scanner": { + "Choice": { + "scanners": [ + { "Fragment": { "reference": "EscapeSequence" } }, + { "Not": { "chars": ["\"", "\\", "\r", "\n"] } } + ] + } + } + } + }, + { "Atom": { "atom": "\"" } } + ] + } + } + }, + { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "\"" } }, + { + "ZeroOrMore": { + "scanner": { + "Choice": { + "scanners": [ + { "Fragment": { "reference": "EscapeSequence" } }, + { "Range": { "inclusive_start": " ", "inclusive_end": "!" } }, + { "Range": { "inclusive_start": "#", "inclusive_end": "[" } }, + { "Range": { "inclusive_start": "]", "inclusive_end": "~" } } + ] + } + } + } + }, + { "Atom": { "atom": "\"" } } + ] + } + } + } + ] + } + } + }, + { + "Repeated": { + "item": { + "name": "HexStringLiterals", + "reference": "HexStringLiteral", + "enabled": { "From": { "from": "0.5.14" } } + } + } + }, + { + "Enum": { + "item": { + "name": "HexStringLiteral", + "variants": [ + { "reference": "SingleQuotedHexStringLiteral" }, + { "reference": "DoubleQuotedHexStringLiteral" } + ] + } + } + }, + { + "Token": { + "item": { + "name": "SingleQuotedHexStringLiteral", + "definitions": [ + { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "hex'" } }, + { "Optional": { "scanner": { "Fragment": { "reference": "HexStringContents" } } } }, + { "Atom": { "atom": "'" } } + ] + } + } + } + ] + } + } + }, + { + "Token": { + "item": { + "name": "DoubleQuotedHexStringLiteral", + "definitions": [ + { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "hex\"" } }, + { "Optional": { "scanner": { "Fragment": { "reference": "HexStringContents" } } } }, + { "Atom": { "atom": "\"" } } + ] + } + } + } + ] + } + } + }, + { + "Fragment": { + "item": { + "name": "HexStringContents", + "scanner": { + "Sequence": { + "scanners": [ + { "Fragment": { "reference": "HexCharacter" } }, + { "Fragment": { "reference": "HexCharacter" } }, + { + "ZeroOrMore": { + "scanner": { + "Sequence": { + "scanners": [ + { "Optional": { "scanner": { "Atom": { "atom": "_" } } } }, + { "Fragment": { "reference": "HexCharacter" } }, + { "Fragment": { "reference": "HexCharacter" } } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "Fragment": { + "item": { + "name": "HexCharacter", + "scanner": { + "Choice": { + "scanners": [ + { "Range": { "inclusive_start": "0", "inclusive_end": "9" } }, + { "Range": { "inclusive_start": "a", "inclusive_end": "f" } }, + { "Range": { "inclusive_start": "A", "inclusive_end": "F" } } + ] + } + } + } + } + }, + { + "Repeated": { + "item": { + "name": "UnicodeStringLiterals", + "reference": "UnicodeStringLiteral", + "enabled": { "From": { "from": "0.7.0" } } + } + } + }, + { + "Enum": { + "item": { + "name": "UnicodeStringLiteral", + "enabled": { "From": { "from": "0.7.0" } }, + "variants": [ + { "reference": "SingleQuotedUnicodeStringLiteral" }, + { "reference": "DoubleQuotedUnicodeStringLiteral" } + ] + } + } + }, + { + "Token": { + "item": { + "name": "SingleQuotedUnicodeStringLiteral", + "definitions": [ + { + "enabled": { "From": { "from": "0.7.0" } }, + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "unicode'" } }, + { + "ZeroOrMore": { + "scanner": { + "Choice": { + "scanners": [ + { "Fragment": { "reference": "EscapeSequence" } }, + { "Not": { "chars": ["'", "\\", "\r", "\n"] } } + ] + } + } + } + }, + { "Atom": { "atom": "'" } } + ] + } + } + } + ] + } + } + }, + { + "Token": { + "item": { + "name": "DoubleQuotedUnicodeStringLiteral", + "definitions": [ + { + "enabled": { "From": { "from": "0.7.0" } }, + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "unicode\"" } }, + { + "ZeroOrMore": { + "scanner": { + "Choice": { + "scanners": [ + { "Fragment": { "reference": "EscapeSequence" } }, + { "Not": { "chars": ["\"", "\\", "\r", "\n"] } } + ] + } + } + } + }, + { "Atom": { "atom": "\"" } } + ] + } + } + } + ] + } + } + }, + { + "Fragment": { + "item": { + "name": "EscapeSequence", + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "\\" } }, + { + "Choice": { + "scanners": [ + { "Fragment": { "reference": "AsciiEscape" } }, + { "Fragment": { "reference": "HexByteEscape" } }, + { "Fragment": { "reference": "UnicodeEscape" } } + ] + } + } + ] + } + } + } + } + }, + { + "Fragment": { + "item": { + "name": "EscapeSequenceArbitrary", + "enabled": { "Till": { "till": "0.4.25" } }, + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "\\" } }, + { + "Choice": { + "scanners": [ + { "Not": { "chars": ["x", "u"] } }, + { "Fragment": { "reference": "HexByteEscape" } }, + { "Fragment": { "reference": "UnicodeEscape" } } + ] + } + } + ] + } + } + } + } + }, + { + "Fragment": { + "item": { + "name": "AsciiEscape", + "scanner": { + "Choice": { + "scanners": [ + { "Atom": { "atom": "n" } }, + { "Atom": { "atom": "r" } }, + { "Atom": { "atom": "t" } }, + { "Atom": { "atom": "'" } }, + { "Atom": { "atom": "\"" } }, + { "Atom": { "atom": "\\" } }, + { "Atom": { "atom": "\r\n" } }, + { "Atom": { "atom": "\r" } }, + { "Atom": { "atom": "\n" } } + ] + } + } + } + } + }, + { + "Fragment": { + "item": { + "name": "HexByteEscape", + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "x" } }, + { "Fragment": { "reference": "HexCharacter" } }, + { "Fragment": { "reference": "HexCharacter" } } + ] + } + } + } + } + }, + { + "Fragment": { + "item": { + "name": "UnicodeEscape", + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "u" } }, + { "Fragment": { "reference": "HexCharacter" } }, + { "Fragment": { "reference": "HexCharacter" } }, + { "Fragment": { "reference": "HexCharacter" } }, + { "Fragment": { "reference": "HexCharacter" } } + ] + } + } + } + } + } + ] + }, + { + "title": "Identifiers", + "items": [ + { "Separated": { "item": { "name": "IdentifierPath", "reference": "Identifier", "separator": "Period" } } }, + { + "Token": { + "item": { + "name": "Identifier", + "definitions": [ + { + "scanner": { + "Sequence": { + "scanners": [ + { "Fragment": { "reference": "IdentifierStart" } }, + { "ZeroOrMore": { "scanner": { "Fragment": { "reference": "IdentifierPart" } } } } + ] + } + } + } + ] + } + } + }, + { + "Fragment": { + "item": { + "name": "IdentifierStart", + "scanner": { + "Choice": { + "scanners": [ + { "Atom": { "atom": "_" } }, + { "Atom": { "atom": "$" } }, + { "Range": { "inclusive_start": "a", "inclusive_end": "z" } }, + { "Range": { "inclusive_start": "A", "inclusive_end": "Z" } } + ] + } + } + } + } + }, + { + "Fragment": { + "item": { + "name": "IdentifierPart", + "scanner": { + "Choice": { + "scanners": [ + { "Fragment": { "reference": "IdentifierStart" } }, + { "Range": { "inclusive_start": "0", "inclusive_end": "9" } } + ] + } + } + } + } + } + ] + } + ] + }, + { + "title": "Yul", + "topics": [ + { + "title": "Yul Statements", + "lexical_context": "Yul", + "items": [ + { + "Struct": { + "item": { + "name": "YulBlock", + "error_recovery": { "delimiters": { "open": "open_brace", "close": "close_brace" } }, + "fields": { + "open_brace": { "Required": { "reference": "OpenBrace" } }, + "statements": { "Required": { "reference": "YulStatements" } }, + "close_brace": { "Required": { "reference": "CloseBrace" } } + } + } + } + }, + { "Repeated": { "item": { "name": "YulStatements", "reference": "YulStatement", "allow_empty": true } } }, + { + "Enum": { + "item": { + "name": "YulStatement", + "variants": [ + { "reference": "YulBlock" }, + { "reference": "YulFunctionDefinition" }, + { "reference": "YulStackAssignmentStatement", "enabled": { "Till": { "till": "0.5.0" } } }, + { "reference": "YulIfStatement" }, + { "reference": "YulForStatement" }, + { "reference": "YulSwitchStatement" }, + { "reference": "YulLeaveStatement", "enabled": { "From": { "from": "0.6.0" } } }, + { "reference": "YulBreakStatement" }, + { "reference": "YulContinueStatement" }, + { "reference": "YulVariableAssignmentStatement" }, + { "reference": "YulLabel", "enabled": { "Till": { "till": "0.5.0" } } }, + { "reference": "YulVariableDeclarationStatement" }, + { "reference": "YulExpression" } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "YulFunctionDefinition", + "fields": { + "function_keyword": { "Required": { "reference": "YulFunctionKeyword" } }, + "name": { "Required": { "reference": "YulIdentifier" } }, + "parameters": { "Required": { "reference": "YulParametersDeclaration" } }, + "returns": { "Optional": { "reference": "YulReturnsDeclaration" } }, + "body": { "Required": { "reference": "YulBlock" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "YulParametersDeclaration", + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "open_paren": { "Required": { "reference": "OpenParen" } }, + "parameters": { "Required": { "reference": "YulParameters" } }, + "close_paren": { "Required": { "reference": "CloseParen" } } + } + } + } + }, + { + "Separated": { + "item": { + "name": "YulParameters", + "reference": "YulIdentifier", + "separator": "Comma", + "allow_empty": true + } + } + }, + { + "Struct": { + "item": { + "name": "YulReturnsDeclaration", + "fields": { + "minus_greater_than": { "Required": { "reference": "MinusGreaterThan" } }, + "variables": { "Required": { "reference": "YulVariableNames" } } + } + } + } + }, + { + "Separated": { + "item": { "name": "YulVariableNames", "reference": "YulIdentifier", "separator": "Comma" } + } + }, + { + "Struct": { + "item": { + "name": "YulVariableDeclarationStatement", + "fields": { + "let_keyword": { "Required": { "reference": "YulLetKeyword" } }, + "variables": { "Required": { "reference": "YulVariableNames" } }, + "value": { "Optional": { "reference": "YulVariableDeclarationValue" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "YulVariableDeclarationValue", + "fields": { + "assignment": { "Required": { "reference": "YulAssignmentOperator" } }, + "expression": { "Required": { "reference": "YulExpression" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "YulVariableAssignmentStatement", + "fields": { + "variables": { "Required": { "reference": "YulPaths" } }, + "assignment": { "Required": { "reference": "YulAssignmentOperator" } }, + "expression": { "Required": { "reference": "YulExpression" } } + } + } + } + }, + { + "Enum": { + "item": { + "name": "YulAssignmentOperator", + "variants": [ + { "reference": "ColonEqual" }, + { "reference": "YulColonAndEqual", "enabled": { "Till": { "till": "0.5.5" } } } + ] + } + } + }, + { + "Struct": { + "item": { + "name": "YulColonAndEqual", + "enabled": { "Till": { "till": "0.5.5" } }, + "fields": { + "colon": { "Required": { "reference": "Colon" } }, + "equal": { "Required": { "reference": "Equal" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "YulStackAssignmentStatement", + "enabled": { "Till": { "till": "0.5.0" } }, + "fields": { + "assignment": { "Required": { "reference": "YulStackAssignmentOperator" } }, + "variable": { "Required": { "reference": "YulIdentifier" } } + } + } + } + }, + { + "Enum": { + "item": { + "name": "YulStackAssignmentOperator", + "enabled": { "Till": { "till": "0.5.0" } }, + "variants": [{ "reference": "EqualColon" }, { "reference": "YulEqualAndColon" }] + } + } + }, + { + "Struct": { + "item": { + "name": "YulEqualAndColon", + "enabled": { "Till": { "till": "0.5.0" } }, + "fields": { + "equal": { "Required": { "reference": "Equal" } }, + "colon": { "Required": { "reference": "Colon" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "YulIfStatement", + "fields": { + "if_keyword": { "Required": { "reference": "YulIfKeyword" } }, + "condition": { "Required": { "reference": "YulExpression" } }, + "body": { "Required": { "reference": "YulBlock" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "YulForStatement", + "fields": { + "for_keyword": { "Required": { "reference": "YulForKeyword" } }, + "initialization": { "Required": { "reference": "YulBlock" } }, + "condition": { "Required": { "reference": "YulExpression" } }, + "iterator": { "Required": { "reference": "YulBlock" } }, + "body": { "Required": { "reference": "YulBlock" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "YulSwitchStatement", + "fields": { + "switch_keyword": { "Required": { "reference": "YulSwitchKeyword" } }, + "expression": { "Required": { "reference": "YulExpression" } }, + "cases": { "Required": { "reference": "YulSwitchCases" } } + } + } + } + }, + { "Repeated": { "item": { "name": "YulSwitchCases", "reference": "YulSwitchCase" } } }, + { + "Enum": { + "item": { + "name": "YulSwitchCase", + "variants": [{ "reference": "YulDefaultCase" }, { "reference": "YulValueCase" }] + } + } + }, + { + "Struct": { + "item": { + "name": "YulDefaultCase", + "fields": { + "default_keyword": { "Required": { "reference": "YulDefaultKeyword" } }, + "body": { "Required": { "reference": "YulBlock" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "YulValueCase", + "fields": { + "case_keyword": { "Required": { "reference": "YulCaseKeyword" } }, + "value": { "Required": { "reference": "YulLiteral" } }, + "body": { "Required": { "reference": "YulBlock" } } + } + } + } + }, + { + "Struct": { + "item": { + "name": "YulLeaveStatement", + "enabled": { "From": { "from": "0.6.0" } }, + "fields": { "leave_keyword": { "Required": { "reference": "YulLeaveKeyword" } } } + } + } + }, + { + "Struct": { + "item": { + "name": "YulBreakStatement", + "fields": { "break_keyword": { "Required": { "reference": "YulBreakKeyword" } } } + } + } + }, + { + "Struct": { + "item": { + "name": "YulContinueStatement", + "fields": { "continue_keyword": { "Required": { "reference": "YulContinueKeyword" } } } + } + } + }, + { + "Struct": { + "item": { + "name": "YulLabel", + "enabled": { "Till": { "till": "0.5.0" } }, + "fields": { + "label": { "Required": { "reference": "YulIdentifier" } }, + "colon": { "Required": { "reference": "Colon" } } + } + } + } + } + ] + }, + { + "title": "Yul Expressions", + "lexical_context": "Yul", + "items": [ + { + "Precedence": { + "item": { + "name": "YulExpression", + "precedence_expressions": [ + { + "name": "YulFunctionCallExpression", + "operators": [ + { + "model": "Postfix", + "error_recovery": { "delimiters": { "open": "open_paren", "close": "close_paren" } }, + "fields": { + "open_paren": { "Required": { "reference": "OpenParen" } }, + "arguments": { "Required": { "reference": "YulArguments" } }, + "close_paren": { "Required": { "reference": "CloseParen" } } + } + } + ] + } + ], + "primary_expressions": [ + { "reference": "YulLiteral" }, + { "reference": "YulBuiltInFunction" }, + { "reference": "YulPath" } + ] + } + } + }, + { + "Separated": { + "item": { + "name": "YulArguments", + "reference": "YulExpression", + "separator": "Comma", + "allow_empty": true + } + } + }, + { "Separated": { "item": { "name": "YulPaths", "reference": "YulPath", "separator": "Comma" } } }, + { "Separated": { "item": { "name": "YulPath", "reference": "YulIdentifier", "separator": "Period" } } }, + { + "Token": { + "item": { + "name": "YulIdentifier", + "definitions": [ + { + "enabled": { "Range": { "from": "0.5.8", "till": "0.7.0" } }, + "scanner": { + "Sequence": { + "scanners": [ + { "Fragment": { "reference": "IdentifierStart" } }, + { + "ZeroOrMore": { + "scanner": { + "Choice": { + "scanners": [ + { "Fragment": { "reference": "IdentifierPart" } }, + { "Atom": { "atom": "." } } + ] + } + } + } + } + ] + } + } + }, + { + "scanner": { + "Sequence": { + "scanners": [ + { "Fragment": { "reference": "IdentifierStart" } }, + { "ZeroOrMore": { "scanner": { "Fragment": { "reference": "IdentifierPart" } } } } + ] + } + } + } + ] + } + } + }, + { + "Enum": { + "item": { + "name": "YulBuiltInFunction", + "variants": [ + { "reference": "YulAddKeyword" }, + { "reference": "YulAddModKeyword" }, + { "reference": "YulAddressKeyword" }, + { "reference": "YulAndKeyword" }, + { "reference": "YulBalanceKeyword" }, + { "reference": "YulBlockHashKeyword" }, + { "reference": "YulByteKeyword" }, + { "reference": "YulCallCodeKeyword" }, + { "reference": "YulCallDataCopyKeyword" }, + { "reference": "YulCallDataLoadKeyword" }, + { "reference": "YulCallDataSizeKeyword" }, + { "reference": "YulCallerKeyword" }, + { "reference": "YulCallKeyword" }, + { "reference": "YulCallValueKeyword" }, + { "reference": "YulCoinBaseKeyword" }, + { "reference": "YulCreateKeyword" }, + { "reference": "YulDelegateCallKeyword" }, + { "reference": "YulDivKeyword" }, + { "reference": "YulEqKeyword" }, + { "reference": "YulExpKeyword" }, + { "reference": "YulExtCodeCopyKeyword" }, + { "reference": "YulExtCodeSizeKeyword" }, + { "reference": "YulGasKeyword" }, + { "reference": "YulGasLimitKeyword" }, + { "reference": "YulGasPriceKeyword" }, + { "reference": "YulGtKeyword" }, + { "reference": "YulInvalidKeyword" }, + { "reference": "YulIsZeroKeyword" }, + { "reference": "YulJumpKeyword", "enabled": { "Till": { "till": "0.5.0" } } }, + { "reference": "YulJumpiKeyword", "enabled": { "Till": { "till": "0.5.0" } } }, + { "reference": "YulLog0Keyword" }, + { "reference": "YulLog1Keyword" }, + { "reference": "YulLog2Keyword" }, + { "reference": "YulLog3Keyword" }, + { "reference": "YulLog4Keyword" }, + { "reference": "YulLtKeyword" }, + { "reference": "YulMLoadKeyword" }, + { "reference": "YulModKeyword" }, + { "reference": "YulMSizeKeyword" }, + { "reference": "YulMStore8Keyword" }, + { "reference": "YulMStoreKeyword" }, + { "reference": "YulMulKeyword" }, + { "reference": "YulMulModKeyword" }, + { "reference": "YulNotKeyword" }, + { "reference": "YulNumberKeyword" }, + { "reference": "YulOriginKeyword" }, + { "reference": "YulOrKeyword" }, + { "reference": "YulPopKeyword" }, + { "reference": "YulReturnKeyword" }, + { "reference": "YulRevertKeyword" }, + { "reference": "YulSDivKeyword" }, + { "reference": "YulSelfDestructKeyword" }, + { "reference": "YulSgtKeyword" }, + { "reference": "YulSignExtendKeyword" }, + { "reference": "YulSLoadKeyword" }, + { "reference": "YulSltKeyword" }, + { "reference": "YulSModKeyword" }, + { "reference": "YulSStoreKeyword" }, + { "reference": "YulStopKeyword" }, + { "reference": "YulSubKeyword" }, + { "reference": "YulTimestampKeyword" }, + { "reference": "YulXorKeyword" }, + { "reference": "YulKeccak256Keyword", "enabled": { "From": { "from": "0.4.12" } } }, + { "reference": "YulSha3Keyword", "enabled": { "Till": { "till": "0.5.0" } } }, + { "reference": "YulSuicideKeyword", "enabled": { "Till": { "till": "0.5.0" } } }, + { "reference": "YulReturnDataCopyKeyword", "enabled": { "From": { "from": "0.4.12" } } }, + { "reference": "YulReturnDataSizeKeyword", "enabled": { "From": { "from": "0.4.12" } } }, + { "reference": "YulStaticCallKeyword", "enabled": { "From": { "from": "0.4.12" } } }, + { "reference": "YulCreate2Keyword", "enabled": { "From": { "from": "0.4.12" } } }, + { "reference": "YulExtCodeHashKeyword", "enabled": { "From": { "from": "0.5.0" } } }, + { "reference": "YulSarKeyword" }, + { "reference": "YulShlKeyword" }, + { "reference": "YulShrKeyword" }, + { "reference": "YulChainIdKeyword" }, + { "reference": "YulSelfBalanceKeyword" }, + { "reference": "YulBaseFeeKeyword", "enabled": { "From": { "from": "0.8.7" } } }, + { "reference": "YulDifficultyKeyword", "enabled": { "Till": { "till": "0.8.18" } } }, + { "reference": "YulPrevRandaoKeyword", "enabled": { "From": { "from": "0.8.18" } } }, + { "reference": "YulBlobBaseFeeKeyword", "enabled": { "From": { "from": "0.8.24" } } }, + { "reference": "YulBlobHashKeyword", "enabled": { "From": { "from": "0.8.24" } } }, + { "reference": "YulTLoadKeyword", "enabled": { "From": { "from": "0.8.24" } } }, + { "reference": "YulTStoreKeyword", "enabled": { "From": { "from": "0.8.24" } } }, + { "reference": "YulMCopyKeyword", "enabled": { "From": { "from": "0.8.24" } } } + ] + } + } + }, + { + "Enum": { + "item": { + "name": "YulLiteral", + "variants": [ + { "reference": "YulTrueKeyword" }, + { "reference": "YulFalseKeyword" }, + { "reference": "YulDecimalLiteral" }, + { "reference": "YulHexLiteral" }, + { "reference": "HexStringLiteral" }, + { "reference": "StringLiteral" } + ] + } + } + }, + { + "Token": { + "item": { + "name": "YulDecimalLiteral", + "definitions": [ + { + "scanner": { + "TrailingContext": { + "scanner": { + "Choice": { + "scanners": [ + { "Atom": { "atom": "0" } }, + { + "Sequence": { + "scanners": [ + { "Range": { "inclusive_start": "1", "inclusive_end": "9" } }, + { + "ZeroOrMore": { + "scanner": { "Range": { "inclusive_start": "0", "inclusive_end": "9" } } + } + } + ] + } + } + ] + } + }, + "not_followed_by": { "Fragment": { "reference": "IdentifierStart" } } + } + } + } + ] + } + } + }, + { + "Token": { + "item": { + "name": "YulHexLiteral", + "definitions": [ + { + "scanner": { + "TrailingContext": { + "scanner": { + "Sequence": { + "scanners": [ + { "Atom": { "atom": "0x" } }, + { "OneOrMore": { "scanner": { "Fragment": { "reference": "HexCharacter" } } } } + ] + } + }, + "not_followed_by": { "Fragment": { "reference": "IdentifierStart" } } + } + } + } + ] + } + } + } + ] + }, + { + "title": "Yul Keywords", + "lexical_context": "Yul", + "items": [ + { + "Keyword": { + "item": { + "name": "YulAbstractKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "abstract" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulAddKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "add" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulAddModKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "addmod" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulAddressKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "reserved": "Never", "value": { "Atom": { "atom": "address" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulAfterKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "after" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulAliasKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "alias" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulAndKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "and" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulAnonymousKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "anonymous" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulApplyKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "apply" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulAsKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "as" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulAssemblyKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "assembly" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulAutoKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "auto" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulBalanceKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "balance" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulBaseFeeKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.8.7" } }, + "reserved": { "From": { "from": "0.8.7" } }, + "value": { "Atom": { "atom": "basefee" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulBlobBaseFeeKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.8.24" } }, + "reserved": { "From": { "from": "0.8.25" } }, + "value": { "Atom": { "atom": "blobbasefee" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulBlobHashKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.8.24" } }, + "reserved": { "From": { "from": "0.8.25" } }, + "value": { "Atom": { "atom": "blobhash" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulBlockHashKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "blockhash" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulBoolKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.5.10" } }, + "value": { "Atom": { "atom": "bool" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulBreakKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "break" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulByteKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "byte" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulBytesKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "bytes" } }, + { + "Optional": { + "value": { + "Choice": { + "values": [ + { "Atom": { "atom": "1" } }, + { "Atom": { "atom": "2" } }, + { "Atom": { "atom": "3" } }, + { "Atom": { "atom": "4" } }, + { "Atom": { "atom": "5" } }, + { "Atom": { "atom": "6" } }, + { "Atom": { "atom": "7" } }, + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "9" } }, + { "Atom": { "atom": "10" } }, + { "Atom": { "atom": "11" } }, + { "Atom": { "atom": "12" } }, + { "Atom": { "atom": "13" } }, + { "Atom": { "atom": "14" } }, + { "Atom": { "atom": "15" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "17" } }, + { "Atom": { "atom": "18" } }, + { "Atom": { "atom": "19" } }, + { "Atom": { "atom": "20" } }, + { "Atom": { "atom": "21" } }, + { "Atom": { "atom": "22" } }, + { "Atom": { "atom": "23" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "25" } }, + { "Atom": { "atom": "26" } }, + { "Atom": { "atom": "27" } }, + { "Atom": { "atom": "28" } }, + { "Atom": { "atom": "29" } }, + { "Atom": { "atom": "30" } }, + { "Atom": { "atom": "31" } }, + { "Atom": { "atom": "32" } } + ] + } + } + } + } + ] + } + } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulCallCodeKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "callcode" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulCallDataCopyKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "calldatacopy" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulCallDataKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "calldata" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulCallDataLoadKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "calldataload" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulCallDataSizeKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "calldatasize" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulCallerKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "caller" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulCallKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "call" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulCallValueKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "callvalue" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulCaseKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "case" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulCatchKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "catch" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulChainIdKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { "reserved": { "From": { "from": "0.5.12" } }, "value": { "Atom": { "atom": "chainid" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulCoinBaseKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "coinbase" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulConstantKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "constant" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulConstructorKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "constructor" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulContinueKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "continue" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulContractKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "contract" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulCopyOfKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "copyof" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulCreateKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "create" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulCreate2Keyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.4.12" } }, + "reserved": { "From": { "from": "0.4.12" } }, + "value": { "Atom": { "atom": "create2" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulDaysKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "days" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulDefaultKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "default" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulDefineKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "define" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulDelegateCallKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "delegatecall" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulDeleteKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "delete" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulDifficultyKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { "enabled": { "Till": { "till": "0.8.18" } }, "value": { "Atom": { "atom": "difficulty" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulDivKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "div" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulDoKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "do" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulElseKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "else" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulEmitKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "emit" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulEnumKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "enum" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulEqKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "eq" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulEtherKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "ether" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulEventKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "event" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulExpKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "exp" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulExtCodeCopyKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "extcodecopy" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulExtCodeHashKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.5.0" } }, + "reserved": { "From": { "from": "0.5.0" } }, + "value": { "Atom": { "atom": "extcodehash" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulExtCodeSizeKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "extcodesize" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulExternalKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "external" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulFallbackKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.6.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "fallback" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulFalseKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "false" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulFinalKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "final" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulFinneyKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.0" } }, + "value": { "Atom": { "atom": "finney" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulFixedKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "fixed" } } + }, + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "fixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } }, + { "Atom": { "atom": "88" } }, + { "Atom": { "atom": "96" } }, + { "Atom": { "atom": "104" } }, + { "Atom": { "atom": "112" } }, + { "Atom": { "atom": "120" } }, + { "Atom": { "atom": "128" } }, + { "Atom": { "atom": "136" } }, + { "Atom": { "atom": "144" } }, + { "Atom": { "atom": "152" } }, + { "Atom": { "atom": "160" } }, + { "Atom": { "atom": "168" } }, + { "Atom": { "atom": "176" } } + ] + } + }, + { "Atom": { "atom": "x" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } } + ] + } + } + ] + } + } + }, + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "fixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "184x8" } }, + { "Atom": { "atom": "184x16" } }, + { "Atom": { "atom": "184x24" } }, + { "Atom": { "atom": "184x32" } }, + { "Atom": { "atom": "184x40" } }, + { "Atom": { "atom": "184x48" } }, + { "Atom": { "atom": "184x56" } }, + { "Atom": { "atom": "184x64" } }, + { "Atom": { "atom": "184x72" } }, + { "Atom": { "atom": "192x8" } }, + { "Atom": { "atom": "192x16" } }, + { "Atom": { "atom": "192x24" } }, + { "Atom": { "atom": "192x32" } }, + { "Atom": { "atom": "192x40" } }, + { "Atom": { "atom": "192x48" } }, + { "Atom": { "atom": "192x56" } }, + { "Atom": { "atom": "192x64" } }, + { "Atom": { "atom": "200x8" } }, + { "Atom": { "atom": "200x16" } }, + { "Atom": { "atom": "200x24" } }, + { "Atom": { "atom": "200x32" } }, + { "Atom": { "atom": "200x40" } }, + { "Atom": { "atom": "200x48" } }, + { "Atom": { "atom": "200x56" } }, + { "Atom": { "atom": "208x8" } }, + { "Atom": { "atom": "208x16" } }, + { "Atom": { "atom": "208x24" } }, + { "Atom": { "atom": "208x32" } }, + { "Atom": { "atom": "208x40" } }, + { "Atom": { "atom": "208x48" } }, + { "Atom": { "atom": "216x8" } }, + { "Atom": { "atom": "216x16" } }, + { "Atom": { "atom": "216x24" } }, + { "Atom": { "atom": "216x32" } }, + { "Atom": { "atom": "216x40" } }, + { "Atom": { "atom": "224x8" } }, + { "Atom": { "atom": "224x16" } }, + { "Atom": { "atom": "224x24" } }, + { "Atom": { "atom": "224x32" } }, + { "Atom": { "atom": "232x8" } }, + { "Atom": { "atom": "232x16" } }, + { "Atom": { "atom": "232x24" } }, + { "Atom": { "atom": "240x8" } }, + { "Atom": { "atom": "240x16" } }, + { "Atom": { "atom": "248x8" } } + ] + } + } + ] + } + } + }, + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.4.14", "till": "0.7.1" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "fixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "184x80" } }, + { "Atom": { "atom": "192x72" } }, + { "Atom": { "atom": "192x80" } }, + { "Atom": { "atom": "200x64" } }, + { "Atom": { "atom": "200x72" } }, + { "Atom": { "atom": "200x80" } }, + { "Atom": { "atom": "208x56" } }, + { "Atom": { "atom": "208x64" } }, + { "Atom": { "atom": "208x72" } }, + { "Atom": { "atom": "208x80" } }, + { "Atom": { "atom": "216x48" } }, + { "Atom": { "atom": "216x56" } }, + { "Atom": { "atom": "216x64" } }, + { "Atom": { "atom": "216x72" } }, + { "Atom": { "atom": "216x80" } }, + { "Atom": { "atom": "224x40" } }, + { "Atom": { "atom": "224x48" } }, + { "Atom": { "atom": "224x56" } }, + { "Atom": { "atom": "224x64" } }, + { "Atom": { "atom": "224x72" } }, + { "Atom": { "atom": "224x80" } }, + { "Atom": { "atom": "232x32" } }, + { "Atom": { "atom": "232x40" } }, + { "Atom": { "atom": "232x48" } }, + { "Atom": { "atom": "232x56" } }, + { "Atom": { "atom": "232x64" } }, + { "Atom": { "atom": "232x72" } }, + { "Atom": { "atom": "232x80" } }, + { "Atom": { "atom": "240x24" } }, + { "Atom": { "atom": "240x32" } }, + { "Atom": { "atom": "240x40" } }, + { "Atom": { "atom": "240x48" } }, + { "Atom": { "atom": "240x56" } }, + { "Atom": { "atom": "240x64" } }, + { "Atom": { "atom": "240x72" } }, + { "Atom": { "atom": "240x80" } }, + { "Atom": { "atom": "248x16" } }, + { "Atom": { "atom": "248x24" } }, + { "Atom": { "atom": "248x32" } }, + { "Atom": { "atom": "248x40" } }, + { "Atom": { "atom": "248x48" } }, + { "Atom": { "atom": "248x56" } }, + { "Atom": { "atom": "248x64" } }, + { "Atom": { "atom": "248x72" } }, + { "Atom": { "atom": "248x80" } }, + { "Atom": { "atom": "256x8" } }, + { "Atom": { "atom": "256x16" } }, + { "Atom": { "atom": "256x24" } }, + { "Atom": { "atom": "256x32" } }, + { "Atom": { "atom": "256x40" } }, + { "Atom": { "atom": "256x48" } }, + { "Atom": { "atom": "256x56" } }, + { "Atom": { "atom": "256x64" } }, + { "Atom": { "atom": "256x72" } }, + { "Atom": { "atom": "256x80" } } + ] + } + } + ] + } + } + }, + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.4.14", "till": "0.7.1" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "fixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } }, + { "Atom": { "atom": "88" } }, + { "Atom": { "atom": "96" } }, + { "Atom": { "atom": "104" } }, + { "Atom": { "atom": "112" } }, + { "Atom": { "atom": "120" } }, + { "Atom": { "atom": "128" } }, + { "Atom": { "atom": "136" } }, + { "Atom": { "atom": "144" } }, + { "Atom": { "atom": "152" } }, + { "Atom": { "atom": "160" } }, + { "Atom": { "atom": "168" } }, + { "Atom": { "atom": "176" } }, + { "Atom": { "atom": "184" } }, + { "Atom": { "atom": "192" } }, + { "Atom": { "atom": "200" } }, + { "Atom": { "atom": "208" } }, + { "Atom": { "atom": "216" } }, + { "Atom": { "atom": "224" } }, + { "Atom": { "atom": "232" } }, + { "Atom": { "atom": "240" } }, + { "Atom": { "atom": "248" } }, + { "Atom": { "atom": "256" } } + ] + } + }, + { "Atom": { "atom": "x" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "0" } }, + { "Atom": { "atom": "1" } }, + { "Atom": { "atom": "2" } }, + { "Atom": { "atom": "3" } }, + { "Atom": { "atom": "4" } }, + { "Atom": { "atom": "5" } }, + { "Atom": { "atom": "6" } }, + { "Atom": { "atom": "7" } }, + { "Atom": { "atom": "9" } }, + { "Atom": { "atom": "10" } }, + { "Atom": { "atom": "11" } }, + { "Atom": { "atom": "12" } }, + { "Atom": { "atom": "13" } }, + { "Atom": { "atom": "14" } }, + { "Atom": { "atom": "15" } }, + { "Atom": { "atom": "17" } }, + { "Atom": { "atom": "18" } }, + { "Atom": { "atom": "19" } }, + { "Atom": { "atom": "20" } }, + { "Atom": { "atom": "21" } }, + { "Atom": { "atom": "22" } }, + { "Atom": { "atom": "23" } }, + { "Atom": { "atom": "25" } }, + { "Atom": { "atom": "26" } }, + { "Atom": { "atom": "27" } }, + { "Atom": { "atom": "28" } }, + { "Atom": { "atom": "29" } }, + { "Atom": { "atom": "30" } }, + { "Atom": { "atom": "31" } }, + { "Atom": { "atom": "33" } }, + { "Atom": { "atom": "34" } }, + { "Atom": { "atom": "35" } }, + { "Atom": { "atom": "36" } }, + { "Atom": { "atom": "37" } }, + { "Atom": { "atom": "38" } }, + { "Atom": { "atom": "39" } }, + { "Atom": { "atom": "41" } }, + { "Atom": { "atom": "42" } }, + { "Atom": { "atom": "43" } }, + { "Atom": { "atom": "44" } }, + { "Atom": { "atom": "45" } }, + { "Atom": { "atom": "46" } }, + { "Atom": { "atom": "47" } }, + { "Atom": { "atom": "49" } }, + { "Atom": { "atom": "50" } }, + { "Atom": { "atom": "51" } }, + { "Atom": { "atom": "52" } }, + { "Atom": { "atom": "53" } }, + { "Atom": { "atom": "54" } }, + { "Atom": { "atom": "55" } }, + { "Atom": { "atom": "57" } }, + { "Atom": { "atom": "58" } }, + { "Atom": { "atom": "59" } }, + { "Atom": { "atom": "60" } }, + { "Atom": { "atom": "61" } }, + { "Atom": { "atom": "62" } }, + { "Atom": { "atom": "63" } }, + { "Atom": { "atom": "65" } }, + { "Atom": { "atom": "66" } }, + { "Atom": { "atom": "67" } }, + { "Atom": { "atom": "68" } }, + { "Atom": { "atom": "69" } }, + { "Atom": { "atom": "70" } }, + { "Atom": { "atom": "71" } }, + { "Atom": { "atom": "73" } }, + { "Atom": { "atom": "74" } }, + { "Atom": { "atom": "75" } }, + { "Atom": { "atom": "76" } }, + { "Atom": { "atom": "77" } }, + { "Atom": { "atom": "78" } }, + { "Atom": { "atom": "79" } } + ] + } + } + ] + } + } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulForKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "for" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulFunctionKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "function" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulGasKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "gas" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulGasLimitKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "gaslimit" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulGasPriceKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "gasprice" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulGtKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "gt" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulGweiKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.7.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "gwei" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulHexKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "hex" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulHoursKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "hours" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulIfKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "if" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulImmutableKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "immutable" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulImplementsKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "implements" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulImportKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "import" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulIndexedKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "indexed" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulInKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.6.8" } }, + "value": { "Atom": { "atom": "in" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulInlineKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "inline" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulInterfaceKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "interface" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulInternalKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "internal" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulIntKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "int" } }, + { + "Optional": { + "value": { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } }, + { "Atom": { "atom": "88" } }, + { "Atom": { "atom": "96" } }, + { "Atom": { "atom": "104" } }, + { "Atom": { "atom": "112" } }, + { "Atom": { "atom": "120" } }, + { "Atom": { "atom": "128" } }, + { "Atom": { "atom": "136" } }, + { "Atom": { "atom": "144" } }, + { "Atom": { "atom": "152" } }, + { "Atom": { "atom": "160" } }, + { "Atom": { "atom": "168" } }, + { "Atom": { "atom": "176" } }, + { "Atom": { "atom": "184" } }, + { "Atom": { "atom": "192" } }, + { "Atom": { "atom": "200" } }, + { "Atom": { "atom": "208" } }, + { "Atom": { "atom": "216" } }, + { "Atom": { "atom": "224" } }, + { "Atom": { "atom": "232" } }, + { "Atom": { "atom": "240" } }, + { "Atom": { "atom": "248" } }, + { "Atom": { "atom": "256" } } + ] + } + } + } + } + ] + } + } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulInvalidKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "invalid" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulIsKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "is" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulIsZeroKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "iszero" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulJumpKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { "enabled": { "Till": { "till": "0.5.0" } }, "value": { "Atom": { "atom": "jump" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulJumpiKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { "enabled": { "Till": { "till": "0.5.0" } }, "value": { "Atom": { "atom": "jumpi" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulKeccak256Keyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.4.12" } }, + "reserved": { "From": { "from": "0.4.12" } }, + "value": { "Atom": { "atom": "keccak256" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulLeaveKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.6.0" } }, + "reserved": { "From": { "from": "0.7.1" } }, + "value": { "Atom": { "atom": "leave" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulLetKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "let" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulLibraryKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "library" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulLog0Keyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "log0" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulLog1Keyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "log1" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulLog2Keyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "log2" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulLog3Keyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "log3" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulLog4Keyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "log4" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulLtKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "lt" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulMacroKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "macro" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulMappingKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "mapping" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulMatchKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "match" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulMemoryKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "memory" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulMinutesKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "minutes" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulMCopyKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.8.24" } }, + "reserved": { "From": { "from": "0.8.25" } }, + "value": { "Atom": { "atom": "mcopy" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulMLoadKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "mload" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulModKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "mod" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulModifierKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "modifier" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulMSizeKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "msize" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulMStoreKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "mstore" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulMStore8Keyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "mstore8" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulMulKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "mul" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulMulModKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "mulmod" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulMutableKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "mutable" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulNewKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "new" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulNotKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "not" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulNullKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "null" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulNumberKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "number" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulOfKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "of" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulOrKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "or" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulOriginKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "origin" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulOverrideKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "override" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulPartialKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "partial" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulPayableKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "payable" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulPopKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "pop" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulPragmaKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "pragma" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulPrevRandaoKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.8.18" } }, + "reserved": { "From": { "from": "0.8.18" } }, + "value": { "Atom": { "atom": "prevrandao" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulPrivateKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "private" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulPromiseKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "promise" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulPublicKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "public" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulPureKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "pure" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulReceiveKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.6.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "receive" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulReferenceKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "reference" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulRelocatableKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "relocatable" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulReturnDataCopyKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.4.12" } }, + "reserved": { "From": { "from": "0.4.12" } }, + "value": { "Atom": { "atom": "returndatacopy" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulReturnDataSizeKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.4.12" } }, + "reserved": { "From": { "from": "0.4.12" } }, + "value": { "Atom": { "atom": "returndatasize" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulReturnKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "return" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulReturnsKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "returns" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulRevertKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "revert" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSarKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { "reserved": { "From": { "from": "0.4.21" } }, "value": { "Atom": { "atom": "sar" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSDivKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "sdiv" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSealedKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "sealed" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSecondsKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "seconds" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSelfBalanceKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { "reserved": { "From": { "from": "0.5.12" } }, "value": { "Atom": { "atom": "selfbalance" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSelfDestructKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "selfdestruct" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSgtKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "sgt" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSha3Keyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "Till": { "till": "0.5.0" } }, + "reserved": { "Till": { "till": "0.5.0" } }, + "value": { "Atom": { "atom": "sha3" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulShlKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { "reserved": { "From": { "from": "0.4.21" } }, "value": { "Atom": { "atom": "shl" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulShrKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { "reserved": { "From": { "from": "0.4.21" } }, "value": { "Atom": { "atom": "shr" } } } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSignExtendKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "signextend" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSizeOfKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "sizeof" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSLoadKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "sload" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSltKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "slt" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSModKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "smod" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSStoreKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "sstore" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulStaticCallKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.4.12" } }, + "reserved": { "From": { "from": "0.4.12" } }, + "value": { "Atom": { "atom": "staticcall" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulStaticKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "static" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulStopKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "stop" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulStorageKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "storage" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulStringKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "string" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulStructKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "struct" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSubKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "sub" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSuicideKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "Till": { "till": "0.5.0" } }, + "reserved": { "Till": { "till": "0.5.0" } }, + "value": { "Atom": { "atom": "suicide" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSuperKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "super" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSupportsKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "supports" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSwitchKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "switch" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulSzaboKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.0" } }, + "value": { "Atom": { "atom": "szabo" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulTimestampKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "timestamp" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulThisKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "enabled": "Never", "value": { "Atom": { "atom": "this" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulThrowKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "throw" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulTLoadKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.8.24" } }, + "reserved": { "From": { "from": "0.8.25" } }, + "value": { "Atom": { "atom": "tload" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulTrueKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "true" } } }] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulTStoreKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": { "From": { "from": "0.8.24" } }, + "reserved": { "From": { "from": "0.8.25" } }, + "value": { "Atom": { "atom": "tstore" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulTryKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "try" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulTypeDefKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "typedef" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulTypeKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "type" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulTypeOfKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "typeof" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulUfixedKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "ufixed" } } + }, + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "ufixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } }, + { "Atom": { "atom": "88" } }, + { "Atom": { "atom": "96" } }, + { "Atom": { "atom": "104" } }, + { "Atom": { "atom": "112" } }, + { "Atom": { "atom": "120" } }, + { "Atom": { "atom": "128" } }, + { "Atom": { "atom": "136" } }, + { "Atom": { "atom": "144" } }, + { "Atom": { "atom": "152" } }, + { "Atom": { "atom": "160" } }, + { "Atom": { "atom": "168" } }, + { "Atom": { "atom": "176" } } + ] + } + }, + { "Atom": { "atom": "x" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } } + ] + } + } + ] + } + } + }, + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "ufixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "184x8" } }, + { "Atom": { "atom": "184x16" } }, + { "Atom": { "atom": "184x24" } }, + { "Atom": { "atom": "184x32" } }, + { "Atom": { "atom": "184x40" } }, + { "Atom": { "atom": "184x48" } }, + { "Atom": { "atom": "184x56" } }, + { "Atom": { "atom": "184x64" } }, + { "Atom": { "atom": "184x72" } }, + { "Atom": { "atom": "192x8" } }, + { "Atom": { "atom": "192x16" } }, + { "Atom": { "atom": "192x24" } }, + { "Atom": { "atom": "192x32" } }, + { "Atom": { "atom": "192x40" } }, + { "Atom": { "atom": "192x48" } }, + { "Atom": { "atom": "192x56" } }, + { "Atom": { "atom": "192x64" } }, + { "Atom": { "atom": "200x8" } }, + { "Atom": { "atom": "200x16" } }, + { "Atom": { "atom": "200x24" } }, + { "Atom": { "atom": "200x32" } }, + { "Atom": { "atom": "200x40" } }, + { "Atom": { "atom": "200x48" } }, + { "Atom": { "atom": "200x56" } }, + { "Atom": { "atom": "208x8" } }, + { "Atom": { "atom": "208x16" } }, + { "Atom": { "atom": "208x24" } }, + { "Atom": { "atom": "208x32" } }, + { "Atom": { "atom": "208x40" } }, + { "Atom": { "atom": "208x48" } }, + { "Atom": { "atom": "216x8" } }, + { "Atom": { "atom": "216x16" } }, + { "Atom": { "atom": "216x24" } }, + { "Atom": { "atom": "216x32" } }, + { "Atom": { "atom": "216x40" } }, + { "Atom": { "atom": "224x8" } }, + { "Atom": { "atom": "224x16" } }, + { "Atom": { "atom": "224x24" } }, + { "Atom": { "atom": "224x32" } }, + { "Atom": { "atom": "232x8" } }, + { "Atom": { "atom": "232x16" } }, + { "Atom": { "atom": "232x24" } }, + { "Atom": { "atom": "240x8" } }, + { "Atom": { "atom": "240x16" } }, + { "Atom": { "atom": "248x8" } } + ] + } + } + ] + } + } + }, + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.4.14", "till": "0.7.1" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "ufixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "184x80" } }, + { "Atom": { "atom": "192x72" } }, + { "Atom": { "atom": "192x80" } }, + { "Atom": { "atom": "200x64" } }, + { "Atom": { "atom": "200x72" } }, + { "Atom": { "atom": "200x80" } }, + { "Atom": { "atom": "208x56" } }, + { "Atom": { "atom": "208x64" } }, + { "Atom": { "atom": "208x72" } }, + { "Atom": { "atom": "208x80" } }, + { "Atom": { "atom": "216x48" } }, + { "Atom": { "atom": "216x56" } }, + { "Atom": { "atom": "216x64" } }, + { "Atom": { "atom": "216x72" } }, + { "Atom": { "atom": "216x80" } }, + { "Atom": { "atom": "224x40" } }, + { "Atom": { "atom": "224x48" } }, + { "Atom": { "atom": "224x56" } }, + { "Atom": { "atom": "224x64" } }, + { "Atom": { "atom": "224x72" } }, + { "Atom": { "atom": "224x80" } }, + { "Atom": { "atom": "232x32" } }, + { "Atom": { "atom": "232x40" } }, + { "Atom": { "atom": "232x48" } }, + { "Atom": { "atom": "232x56" } }, + { "Atom": { "atom": "232x64" } }, + { "Atom": { "atom": "232x72" } }, + { "Atom": { "atom": "232x80" } }, + { "Atom": { "atom": "240x24" } }, + { "Atom": { "atom": "240x32" } }, + { "Atom": { "atom": "240x40" } }, + { "Atom": { "atom": "240x48" } }, + { "Atom": { "atom": "240x56" } }, + { "Atom": { "atom": "240x64" } }, + { "Atom": { "atom": "240x72" } }, + { "Atom": { "atom": "240x80" } }, + { "Atom": { "atom": "248x16" } }, + { "Atom": { "atom": "248x24" } }, + { "Atom": { "atom": "248x32" } }, + { "Atom": { "atom": "248x40" } }, + { "Atom": { "atom": "248x48" } }, + { "Atom": { "atom": "248x56" } }, + { "Atom": { "atom": "248x64" } }, + { "Atom": { "atom": "248x72" } }, + { "Atom": { "atom": "248x80" } }, + { "Atom": { "atom": "256x8" } }, + { "Atom": { "atom": "256x16" } }, + { "Atom": { "atom": "256x24" } }, + { "Atom": { "atom": "256x32" } }, + { "Atom": { "atom": "256x40" } }, + { "Atom": { "atom": "256x48" } }, + { "Atom": { "atom": "256x56" } }, + { "Atom": { "atom": "256x64" } }, + { "Atom": { "atom": "256x72" } }, + { "Atom": { "atom": "256x80" } } + ] + } + } + ] + } + } + }, + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.4.14", "till": "0.7.1" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "ufixed" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } }, + { "Atom": { "atom": "88" } }, + { "Atom": { "atom": "96" } }, + { "Atom": { "atom": "104" } }, + { "Atom": { "atom": "112" } }, + { "Atom": { "atom": "120" } }, + { "Atom": { "atom": "128" } }, + { "Atom": { "atom": "136" } }, + { "Atom": { "atom": "144" } }, + { "Atom": { "atom": "152" } }, + { "Atom": { "atom": "160" } }, + { "Atom": { "atom": "168" } }, + { "Atom": { "atom": "176" } }, + { "Atom": { "atom": "184" } }, + { "Atom": { "atom": "192" } }, + { "Atom": { "atom": "200" } }, + { "Atom": { "atom": "208" } }, + { "Atom": { "atom": "216" } }, + { "Atom": { "atom": "224" } }, + { "Atom": { "atom": "232" } }, + { "Atom": { "atom": "240" } }, + { "Atom": { "atom": "248" } }, + { "Atom": { "atom": "256" } } + ] + } + }, + { "Atom": { "atom": "x" } }, + { + "Choice": { + "values": [ + { "Atom": { "atom": "0" } }, + { "Atom": { "atom": "1" } }, + { "Atom": { "atom": "2" } }, + { "Atom": { "atom": "3" } }, + { "Atom": { "atom": "4" } }, + { "Atom": { "atom": "5" } }, + { "Atom": { "atom": "6" } }, + { "Atom": { "atom": "7" } }, + { "Atom": { "atom": "9" } }, + { "Atom": { "atom": "10" } }, + { "Atom": { "atom": "11" } }, + { "Atom": { "atom": "12" } }, + { "Atom": { "atom": "13" } }, + { "Atom": { "atom": "14" } }, + { "Atom": { "atom": "15" } }, + { "Atom": { "atom": "17" } }, + { "Atom": { "atom": "18" } }, + { "Atom": { "atom": "19" } }, + { "Atom": { "atom": "20" } }, + { "Atom": { "atom": "21" } }, + { "Atom": { "atom": "22" } }, + { "Atom": { "atom": "23" } }, + { "Atom": { "atom": "25" } }, + { "Atom": { "atom": "26" } }, + { "Atom": { "atom": "27" } }, + { "Atom": { "atom": "28" } }, + { "Atom": { "atom": "29" } }, + { "Atom": { "atom": "30" } }, + { "Atom": { "atom": "31" } }, + { "Atom": { "atom": "33" } }, + { "Atom": { "atom": "34" } }, + { "Atom": { "atom": "35" } }, + { "Atom": { "atom": "36" } }, + { "Atom": { "atom": "37" } }, + { "Atom": { "atom": "38" } }, + { "Atom": { "atom": "39" } }, + { "Atom": { "atom": "41" } }, + { "Atom": { "atom": "42" } }, + { "Atom": { "atom": "43" } }, + { "Atom": { "atom": "44" } }, + { "Atom": { "atom": "45" } }, + { "Atom": { "atom": "46" } }, + { "Atom": { "atom": "47" } }, + { "Atom": { "atom": "49" } }, + { "Atom": { "atom": "50" } }, + { "Atom": { "atom": "51" } }, + { "Atom": { "atom": "52" } }, + { "Atom": { "atom": "53" } }, + { "Atom": { "atom": "54" } }, + { "Atom": { "atom": "55" } }, + { "Atom": { "atom": "57" } }, + { "Atom": { "atom": "58" } }, + { "Atom": { "atom": "59" } }, + { "Atom": { "atom": "60" } }, + { "Atom": { "atom": "61" } }, + { "Atom": { "atom": "62" } }, + { "Atom": { "atom": "63" } }, + { "Atom": { "atom": "65" } }, + { "Atom": { "atom": "66" } }, + { "Atom": { "atom": "67" } }, + { "Atom": { "atom": "68" } }, + { "Atom": { "atom": "69" } }, + { "Atom": { "atom": "70" } }, + { "Atom": { "atom": "71" } }, + { "Atom": { "atom": "73" } }, + { "Atom": { "atom": "74" } }, + { "Atom": { "atom": "75" } }, + { "Atom": { "atom": "76" } }, + { "Atom": { "atom": "77" } }, + { "Atom": { "atom": "78" } }, + { "Atom": { "atom": "79" } } + ] + } + } + ] + } + } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulUintKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { + "Sequence": { + "values": [ + { "Atom": { "atom": "uint" } }, + { + "Optional": { + "value": { + "Choice": { + "values": [ + { "Atom": { "atom": "8" } }, + { "Atom": { "atom": "16" } }, + { "Atom": { "atom": "24" } }, + { "Atom": { "atom": "32" } }, + { "Atom": { "atom": "40" } }, + { "Atom": { "atom": "48" } }, + { "Atom": { "atom": "56" } }, + { "Atom": { "atom": "64" } }, + { "Atom": { "atom": "72" } }, + { "Atom": { "atom": "80" } }, + { "Atom": { "atom": "88" } }, + { "Atom": { "atom": "96" } }, + { "Atom": { "atom": "104" } }, + { "Atom": { "atom": "112" } }, + { "Atom": { "atom": "120" } }, + { "Atom": { "atom": "128" } }, + { "Atom": { "atom": "136" } }, + { "Atom": { "atom": "144" } }, + { "Atom": { "atom": "152" } }, + { "Atom": { "atom": "160" } }, + { "Atom": { "atom": "168" } }, + { "Atom": { "atom": "176" } }, + { "Atom": { "atom": "184" } }, + { "Atom": { "atom": "192" } }, + { "Atom": { "atom": "200" } }, + { "Atom": { "atom": "208" } }, + { "Atom": { "atom": "216" } }, + { "Atom": { "atom": "224" } }, + { "Atom": { "atom": "232" } }, + { "Atom": { "atom": "240" } }, + { "Atom": { "atom": "248" } }, + { "Atom": { "atom": "256" } } + ] + } + } + } + } + ] + } + } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulUncheckedKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.5.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "unchecked" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulUsingKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "using" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulVarKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.6.5" } }, + "value": { "Atom": { "atom": "var" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulViewKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "view" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulVirtualKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Range": { "from": "0.6.0", "till": "0.7.1" } }, + "value": { "Atom": { "atom": "virtual" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulWeeksKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "weeks" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulWeiKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "wei" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulWhileKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "while" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulYearsKeyword", + "identifier": "YulIdentifier", + "definitions": [ + { + "enabled": "Never", + "reserved": { "Till": { "till": "0.7.1" } }, + "value": { "Atom": { "atom": "years" } } + } + ] + } + } + }, + { + "Keyword": { + "item": { + "name": "YulXorKeyword", + "identifier": "YulIdentifier", + "definitions": [{ "value": { "Atom": { "atom": "xor" } } }] + } + } + } + ] + } + ] + } + ], + "built_ins": [ + { + "BuiltInFunction": { + "item": { "name": "addmod", "parameters": ["uint x", "uint y", "uint k"], "return_type": "uint" } + } + }, + { "BuiltInFunction": { "item": { "name": "assert", "parameters": ["bool condition"] } } }, + { + "BuiltInFunction": { + "item": { + "name": "blockhash", + "parameters": ["uint blockNumber"], + "return_type": "bytes32", + "enabled": { "From": { "from": "0.4.22" } } + } + } + }, + { + "BuiltInFunction": { + "item": { + "name": "blobhash", + "parameters": ["uint index"], + "return_type": "bytes32", + "enabled": { "From": { "from": "0.8.24" } } + } + } + }, + { + "BuiltInFunction": { + "item": { + "name": "ecrecover", + "parameters": ["bytes32 hash", "uint8 v", "bytes32 r", "bytes32 s"], + "return_type": "address" + } + } + }, + { + "BuiltInFunction": { + "item": { "name": "gasleft", "return_type": "uint256", "enabled": { "From": { "from": "0.4.22" } } } + } + }, + { + "BuiltInFunction": { "item": { "name": "keccak256", "parameters": ["bytes memory"], "return_type": "bytes32" } } + }, + { + "BuiltInFunction": { + "item": { "name": "log0", "parameters": ["bytes32"], "enabled": { "Till": { "till": "0.8.0" } } } + } + }, + { + "BuiltInFunction": { + "item": { "name": "log1", "parameters": ["bytes32", "bytes32"], "enabled": { "Till": { "till": "0.8.0" } } } + } + }, + { + "BuiltInFunction": { + "item": { + "name": "log2", + "parameters": ["bytes32", "bytes32", "bytes32"], + "enabled": { "Till": { "till": "0.8.0" } } + } + } + }, + { + "BuiltInFunction": { + "item": { + "name": "log3", + "parameters": ["bytes32", "bytes32", "bytes32", "bytes32"], + "enabled": { "Till": { "till": "0.8.0" } } + } + } + }, + { + "BuiltInFunction": { + "item": { + "name": "log4", + "parameters": ["bytes32", "bytes32", "bytes32", "bytes32", "bytes32"], + "enabled": { "Till": { "till": "0.8.0" } } + } + } + }, + { + "BuiltInFunction": { + "item": { "name": "mulmod", "parameters": ["uint x", "uint y", "uint k"], "return_type": "uint" } + } + }, + { "BuiltInFunction": { "item": { "name": "require", "parameters": ["bool condition"] } } }, + { + "BuiltInFunction": { + "item": { + "name": "require", + "parameters": ["bool condition", "string memory message"], + "enabled": { "From": { "from": "0.4.22" } } + } + } + }, + { + "BuiltInFunction": { + "item": { + "name": "require", + "parameters": ["bool condition", "Error error"], + "enabled": { "From": { "from": "0.8.26" } } + } + } + }, + { "BuiltInFunction": { "item": { "name": "revert" } } }, + { + "BuiltInFunction": { + "item": { + "name": "revert", + "parameters": ["string memory reason"], + "enabled": { "From": { "from": "0.4.22" } } + } + } + }, + { + "BuiltInFunction": { "item": { "name": "ripemd160", "parameters": ["bytes memory"], "return_type": "bytes20" } } + }, + { "BuiltInFunction": { "item": { "name": "selfdestruct", "parameters": ["address payable recipient"] } } }, + { "BuiltInFunction": { "item": { "name": "sha256", "parameters": ["bytes memory"], "return_type": "bytes32" } } }, + { + "BuiltInFunction": { + "item": { + "name": "sha3", + "parameters": ["bytes memory"], + "return_type": "bytes32", + "enabled": { "Till": { "till": "0.5.0" } } + } + } + }, + { + "BuiltInFunction": { + "item": { + "name": "suicide", + "parameters": ["address payable recipient"], + "enabled": { "Till": { "till": "0.5.0" } } + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$AbiType", + "functions": [ + { + "name": "decode", + "parameters": ["bytes memory encodedData", "$Type[] encodedTypesTuple"], + "return_type": "$Any[]", + "enabled": { "From": { "from": "0.5.0" } } + }, + { + "name": "encode", + "parameters": ["$Any[] valuesToEncode"], + "return_type": "bytes memory", + "enabled": { "From": { "from": "0.4.22" } } + }, + { + "name": "encodeCall", + "parameters": ["function() functionPointer", "$Any[] functionArgumentsTuple"], + "return_type": "bytes memory", + "enabled": { "From": { "from": "0.8.11" } } + }, + { + "name": "encodePacked", + "parameters": ["$Any[] valuesToEncode"], + "return_type": "bytes memory", + "enabled": { "From": { "from": "0.4.22" } } + }, + { + "name": "encodeWithSelector", + "parameters": ["bytes4 selector", "$Any[] functionArgumentsTuple"], + "return_type": "bytes memory", + "enabled": { "From": { "from": "0.4.22" } } + }, + { + "name": "encodeWithSignature", + "parameters": ["string memory signature", "$Any[] valuesToEncode"], + "return_type": "bytes memory", + "enabled": { "From": { "from": "0.4.22" } } + } + ] + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$address", + "fields": [ + { "definition": "uint256 balance" }, + { "definition": "bytes code", "enabled": { "From": { "from": "0.8.0" } } }, + { "definition": "bytes32 codehash", "enabled": { "From": { "from": "0.8.0" } } } + ], + "functions": [ + { + "name": "call", + "parameters": ["bytes memory"], + "return_type": "bool", + "enabled": { "Till": { "till": "0.5.0" } } + }, + { + "name": "call", + "parameters": ["bytes memory"], + "return_type": "bool, bytes memory", + "enabled": { "From": { "from": "0.5.0" } } + }, + { + "name": "callcode", + "parameters": ["bytes memory"], + "return_type": "bool, bytes memory", + "enabled": { "Till": { "till": "0.5.0" } } + }, + { + "name": "delegatecall", + "parameters": ["bytes memory"], + "return_type": "bool", + "enabled": { "Till": { "till": "0.5.0" } } + }, + { + "name": "delegatecall", + "parameters": ["bytes memory"], + "return_type": "bool, bytes memory", + "enabled": { "From": { "from": "0.5.0" } } + }, + { "name": "send", "parameters": ["uint256 amount"], "return_type": "bool" }, + { + "name": "staticcall", + "parameters": ["bytes memory"], + "return_type": "bool, bytes memory", + "enabled": { "From": { "from": "0.5.0" } } + }, + { "name": "transfer", "parameters": ["uint256 amount"] } + ] + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$Array", + "fields": [{ "definition": "uint length" }], + "functions": [ + { "name": "push", "return_type": "$ValueType", "enabled": { "From": { "from": "0.6.0" } } }, + { + "name": "push", + "parameters": ["$ValueType element"], + "return_type": "uint", + "enabled": { "Till": { "till": "0.6.0" } } + }, + { "name": "push", "parameters": ["$ValueType element"], "enabled": { "From": { "from": "0.6.0" } } }, + { "name": "pop" } + ] + } + } + }, + { "BuiltInType": { "item": { "name": "$FixedArray", "fields": [{ "definition": "uint length" }] } } }, + { + "BuiltInType": { + "item": { + "name": "$BlockType", + "fields": [ + { "definition": "uint basefee", "enabled": { "From": { "from": "0.8.7" } } }, + { "definition": "uint blobbasefee", "enabled": { "From": { "from": "0.8.24" } } }, + { "definition": "uint chainid", "enabled": { "From": { "from": "0.8.0" } } }, + { "definition": "address payable coinbase" }, + { "definition": "uint difficulty" }, + { "definition": "uint gaslimit" }, + { "definition": "uint number" }, + { "definition": "uint prevrandao", "enabled": { "From": { "from": "0.8.18" } } }, + { "definition": "uint timestamp" } + ], + "functions": [ + { + "name": "blockhash", + "parameters": ["uint"], + "return_type": "bytes32", + "enabled": { "Till": { "till": "0.5.0" } } + } + ] + } + } + }, + { "BuiltInType": { "item": { "name": "$bytes", "fields": [{ "definition": "uint length" }] } } }, + { + "BuiltInType": { + "item": { + "name": "$BytesType", + "functions": [ + { "name": "concat", "parameters": ["bytes[] bytesToConcatenate"], "return_type": "bytes memory" } + ] + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$CallOptions", + "fields": [{ "definition": "uint gas" }, { "definition": "uint salt" }, { "definition": "uint value" }], + "enabled": { "From": { "from": "0.6.2" } } + } + } + }, + { + "BuiltInType": { + "item": { + "name": "Error", + "fields": [{ "definition": "string reason" }], + "enabled": { "From": { "from": "0.6.0" } } + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$ErrorType", + "fields": [{ "definition": "bytes4 selector" }], + "enabled": { "From": { "from": "0.8.4" } } + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$Function", + "functions": [ + { + "name": "gas", + "parameters": ["uint amount"], + "return_type": "function()", + "enabled": { "Till": { "till": "0.7.0" } } + }, + { + "name": "value", + "parameters": ["uint amount"], + "return_type": "function()", + "enabled": { "Till": { "till": "0.7.0" } } + } + ] + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$ExternalFunction", + "fields": [ + { "definition": "address address", "enabled": { "From": { "from": "0.8.2" } } }, + { "definition": "bytes4 selector", "enabled": { "From": { "from": "0.4.17" } } } + ], + "functions": [ + { + "name": "gas", + "parameters": ["uint amount"], + "return_type": "function()", + "enabled": { "Till": { "till": "0.7.0" } } + }, + { + "name": "value", + "parameters": ["uint amount"], + "return_type": "function()", + "enabled": { "Till": { "till": "0.7.0" } } + } + ] + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$MessageType", + "fields": [ + { "definition": "bytes data" }, + { "definition": "uint256 gas", "enabled": { "Till": { "till": "0.5.0" } } }, + { "definition": "address payable sender", "enabled": { "Till": { "till": "0.8.0" } } }, + { "definition": "address sender", "enabled": { "From": { "from": "0.8.0" } } }, + { "definition": "bytes4 sig" }, + { "definition": "uint value" } + ] + } + } + }, + { + "BuiltInType": { + "item": { + "name": "Panic", + "fields": [{ "definition": "uint errorCode" }], + "enabled": { "From": { "from": "0.6.0" } } + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$StringType", + "functions": [ + { "name": "concat", "parameters": ["string[] stringsToConcatenate"], "return_type": "string memory" } + ] + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$TransactionType", + "fields": [ + { "definition": "uint gasprice" }, + { "definition": "address payable origin", "enabled": { "Till": { "till": "0.8.0" } } }, + { "definition": "address origin", "enabled": { "From": { "from": "0.8.0" } } } + ] + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$ContractTypeType", + "fields": [ + { "definition": "string name" }, + { "definition": "bytes creationCode", "enabled": { "From": { "from": "0.5.3" } } }, + { "definition": "bytes runtimeCode", "enabled": { "From": { "from": "0.5.3" } } }, + { "definition": "bytes4 interfaceId", "enabled": { "From": { "from": "0.6.7" } } } + ] + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$InterfaceTypeType", + "fields": [ + { "definition": "string name" }, + { "definition": "bytes4 interfaceId", "enabled": { "From": { "from": "0.6.7" } } } + ] + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$IntTypeType", + "fields": [ + { "definition": "int min", "enabled": { "From": { "from": "0.6.8" } } }, + { "definition": "int max", "enabled": { "From": { "from": "0.6.8" } } } + ] + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$UserDefinedValueType", + "functions": [ + { "name": "wrap", "parameters": ["$WrappedType elementaryType"], "return_type": "$UserType" }, + { "name": "unwrap", "parameters": ["$UserType userType"], "return_type": "$WrappedType" } + ], + "enabled": { "From": { "from": "0.8.8" } } + } + } + }, + { + "BuiltInType": { + "item": { + "name": "$YulExternal", + "fields": [{ "definition": "uint slot" }, { "definition": "uint offset" }, { "definition": "uint length" }] + } + } + }, + { "BuiltInVariable": { "item": { "definition": "$Function $placeholder" } } }, + { "BuiltInVariable": { "item": { "definition": "$AbiType abi" } } }, + { "BuiltInVariable": { "item": { "definition": "$BlockType block" } } }, + { "BuiltInVariable": { "item": { "definition": "$BytesType $bytes" } } }, + { "BuiltInVariable": { "item": { "definition": "$MessageType msg" } } }, + { "BuiltInVariable": { "item": { "definition": "uint now", "enabled": { "Till": { "till": "0.7.0" } } } } }, + { "BuiltInVariable": { "item": { "definition": "$StringType $string" } } }, + { "BuiltInVariable": { "item": { "definition": "$TransactionType tx" } } } + ] +}