This commit is contained in:
Christian Parpart
2020-06-08 10:20:39 +02:00
parent 325a78fe47
commit 0e13a3ae3c
3 changed files with 146 additions and 14 deletions
+29 -4
View File
@@ -8,7 +8,17 @@
grammar Solidity;
sourceUnit
: (pragmaDirective | importDirective | structDefinition | enumDefinition | contractDefinition)* EOF ;
: globalDefinition* EOF ;
globalDefinition
: pragmaDirective
| contractDefinition
| enumDefinition
| importDirective
| interfaceDefinition
| libraryDefinition
| structDefinition
;
pragmaDirective
: 'pragma' pragmaName pragmaValue ';' ;
@@ -36,10 +46,25 @@ importDirective
importDeclaration
: identifier ('as' identifier)? ;
interfaceDefinition
: 'interface' identifier 'from' StringLiteralFragment
| 'interface' identifier 'as' AbiString
| 'interface' identifier contractInheritanceDefinition? contractBody ;
AbiString
: StringLiteral ;
libraryDefinition
: 'abstract'? 'library' identifier contractInheritanceDefinition? contractBody ;
contractDefinition
: 'abstract'? ( 'contract' | 'interface' | 'library' ) identifier
( 'is' inheritanceSpecifier (',' inheritanceSpecifier )* )?
'{' contractPart* '}' ;
: 'abstract'? 'contract' identifier contractInheritanceDefinition? contractBody ;
contractInheritanceDefinition
: ( 'is' inheritanceSpecifier (',' inheritanceSpecifier )* ) ;
contractBody
: '{' contractPart* '}' ;
inheritanceSpecifier
: userDefinedTypeName ( '(' expressionList? ')' )? ;