diff --git a/docs/grammar/SolidityLexer.g4 b/docs/grammar/SolidityLexer.g4 index 43648ceb5d97..ad6b189d4d0e 100644 --- a/docs/grammar/SolidityLexer.g4 +++ b/docs/grammar/SolidityLexer.g4 @@ -85,6 +85,7 @@ SignedIntegerType: Storage: 'storage'; String: 'string'; Struct: 'struct'; +Transient: 'transient'; True: 'true'; Try: 'try'; Type: 'type'; diff --git a/docs/grammar/SolidityParser.g4 b/docs/grammar/SolidityParser.g4 index e6d3ed7ccaea..5addce8aa703 100644 --- a/docs/grammar/SolidityParser.g4 +++ b/docs/grammar/SolidityParser.g4 @@ -165,7 +165,7 @@ locals[ boolean overrideSpecifierSet = false, ] : - Function (identifier | Fallback | Receive) + Function (identifier | Fallback | Receive | Transient) LParen (arguments=parameterList)? RParen ( {!$visibilitySet}? visibility {$visibilitySet = true;} @@ -273,7 +273,10 @@ locals [boolean constantnessSet = false, boolean visibilitySet = false, boolean | {!$overrideSpecifierSet}? overrideSpecifier {$overrideSpecifierSet = true;} | {!$constantnessSet}? Immutable {$constantnessSet = true;} )* - name=identifier + ( + location=Transient name=identifier + | name=identifier + ) (Assign initialValue=expression)? Semicolon; @@ -364,7 +367,14 @@ locals [boolean visibilitySet = false, boolean mutabilitySet = false] /** * The declaration of a single variable. */ -variableDeclaration: type=typeName location=dataLocation? name=identifier; +variableDeclaration +: + type=typeName + ( + Tlocation=Transient name=identifier? + | location=dataLocation? name=identifier + ); + dataLocation: Memory | Storage | Calldata; /** @@ -419,7 +429,7 @@ inlineArrayExpression: LBrack (expression ( Comma expression)* ) RBrack; /** * Besides regular non-keyword Identifiers, some keywords like 'from' and 'error' can also be used as identifiers. */ -identifier: Identifier | From | Error | Revert | Global; +identifier: Identifier | From | Error | Revert | Global | Transient; literal: stringLiteral | numberLiteral | booleanLiteral | hexStringLiteral | unicodeStringLiteral; @@ -497,7 +507,7 @@ tryStatement: Try expression (Returns LParen returnParameters=parameterList RPar */ catchClause: Catch (identifier? LParen (arguments=parameterList) RParen)? block; -returnStatement: Return expression? Semicolon; +returnStatement: Return (expression | Transient)? Semicolon; /** * An emit statement. The contained expression needs to refer to an event. */