1.2. Pragma Directives
PragmaDirective = (* pragma_keyword: *) PRAGMA_KEYWORD
(* pragma: *) Pragma
(* semicolon: *) SEMICOLON;
Pragma = (* variant: *) VersionPragma
| (* variant: *) AbicoderPragma (* Introduced in 0.7.5 *)
| (* variant: *) ExperimentalPragma; (* Introduced in 0.4.16 *)
(* Introduced in 0.7.5 *)
AbicoderPragma = (* abicoder_keyword: *) ABICODER_KEYWORD
(* version: *) AbicoderVersion;
(* Introduced in 0.4.16 *)
ExperimentalPragma = (* experimental_keyword: *) EXPERIMENTAL_KEYWORD
(* feature: *) ExperimentalFeature;
(* Introduced in 0.7.5 *)
AbicoderVersion = (* variant: *) ABICODER_V1_KEYWORD
| (* variant: *) ABICODER_V2_KEYWORD;
(* Introduced in 0.4.16 *)
ExperimentalFeature = (* variant: *) ABI_ENCODER_V2_KEYWORD
| (* variant: *) SMT_CHECKER_KEYWORD
| (* variant: *) StringLiteral;
VersionPragma = (* solidity_keyword: *) SOLIDITY_KEYWORD
(* sets: *) VersionExpressionSets;
VersionExpressionSets = (* item: *) VersionExpressionSet ((* separator: *) BAR_BAR (* item: *) VersionExpressionSet)*;
VersionExpressionSet = (* item: *) VersionExpression+;
VersionExpression = (* variant: *) VersionRange
| (* variant: *) VersionTerm;
VersionRange = (* start: *) VersionLiteral
(* minus: *) MINUS
(* end: *) VersionLiteral;
VersionTerm = (* operator: *) VersionOperator?
(* literal: *) VersionLiteral;
VersionOperator = (* variant: *) CARET
| (* variant: *) TILDE
| (* variant: *) EQUAL
| (* variant: *) LESS_THAN
| (* variant: *) GREATER_THAN
| (* variant: *) LESS_THAN_EQUAL
| (* variant: *) GREATER_THAN_EQUAL;
VersionLiteral = (* variant: *) SimpleVersionLiteral
| (* variant: *) SINGLE_QUOTED_VERSION_LITERAL
| (* variant: *) DOUBLE_QUOTED_VERSION_LITERAL;
SimpleVersionLiteral = (* item: *) VERSION_SPECIFIER ((* separator: *) PERIOD (* item: *) VERSION_SPECIFIER)*;
VERSION_SPECIFIER = «VERSION_SPECIFIER_FRAGMENT»;
SINGLE_QUOTED_VERSION_LITERAL = "'" «VERSION_SPECIFIER_FRAGMENT» ("." «VERSION_SPECIFIER_FRAGMENT»)* "'";
DOUBLE_QUOTED_VERSION_LITERAL = '"' «VERSION_SPECIFIER_FRAGMENT» ("." «VERSION_SPECIFIER_FRAGMENT»)* '"';
«VERSION_SPECIFIER_FRAGMENT» = ("0"…"9" | "x" | "X" | "*")+;