From cb40182d86750ebffc6c42f9cece92d82c7aefa3 Mon Sep 17 00:00:00 2001 From: uNouss Date: Fri, 6 Oct 2023 11:04:50 +0200 Subject: [PATCH 1/2] #32: creation of `FamixF77ExternalDeclaration` --- .../FamixF77ExternalDeclaration.class.st | 18 +++++++++++++++++ .../FamixF77ImportingContext.class.st | 14 +++++++++++++ .../FamixF77TEntityCreator.trait.st | 7 +++++++ .../FamixFortran77Generator.class.st | 20 ++++++++++++++++--- 4 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 src/Famix-Fortran77-Entities/FamixF77ExternalDeclaration.class.st diff --git a/src/Famix-Fortran77-Entities/FamixF77ExternalDeclaration.class.st b/src/Famix-Fortran77-Entities/FamixF77ExternalDeclaration.class.st new file mode 100644 index 0000000..1068d32 --- /dev/null +++ b/src/Famix-Fortran77-Entities/FamixF77ExternalDeclaration.class.st @@ -0,0 +1,18 @@ +" +Im a external declaration. + [See more](https://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vn9d/index.html) +" +Class { + #name : #FamixF77ExternalDeclaration, + #superclass : #FamixF77NamedEntity, + #category : #'Famix-Fortran77-Entities-Entities' +} + +{ #category : #meta } +FamixF77ExternalDeclaration class >> annotation [ + + + + + ^ self +] diff --git a/src/Famix-Fortran77-Entities/FamixF77ImportingContext.class.st b/src/Famix-Fortran77-Entities/FamixF77ImportingContext.class.st index ee942ef..16b1671 100644 --- a/src/Famix-Fortran77-Entities/FamixF77ImportingContext.class.st +++ b/src/Famix-Fortran77-Entities/FamixF77ImportingContext.class.st @@ -29,6 +29,13 @@ FamixF77ImportingContext >> importComment [ ^ self importConcreteEntity: (self class fm3ClassNamed: #Comment) ] +{ #category : #importing } +FamixF77ImportingContext >> importExternalDeclaration [ + + + ^ self importConcreteEntity: (self class fm3ClassNamed: #ExternalDeclaration) +] + { #category : #importing } FamixF77ImportingContext >> importInclude [ @@ -176,6 +183,13 @@ FamixF77ImportingContext >> shouldImportComment [ ^ self shouldImport: #Comment ] +{ #category : #testing } +FamixF77ImportingContext >> shouldImportExternalDeclaration [ + + + ^ self shouldImport: #ExternalDeclaration +] + { #category : #testing } FamixF77ImportingContext >> shouldImportInclude [ diff --git a/src/Famix-Fortran77-Entities/FamixF77TEntityCreator.trait.st b/src/Famix-Fortran77-Entities/FamixF77TEntityCreator.trait.st index 5549f1a..cc977ca 100644 --- a/src/Famix-Fortran77-Entities/FamixF77TEntityCreator.trait.st +++ b/src/Famix-Fortran77-Entities/FamixF77TEntityCreator.trait.st @@ -30,6 +30,13 @@ FamixF77TEntityCreator >> newComment [ ^ self add: FamixF77Comment new ] +{ #category : #'entity creation' } +FamixF77TEntityCreator >> newExternalDeclaration [ + + + ^ self add: FamixF77ExternalDeclaration new +] + { #category : #'entity creation' } FamixF77TEntityCreator >> newInclude [ diff --git a/src/Famix-Fortran77-Generator/FamixFortran77Generator.class.st b/src/Famix-Fortran77-Generator/FamixFortran77Generator.class.st index e8240f2..3cb3ae3 100644 --- a/src/Famix-Fortran77-Generator/FamixFortran77Generator.class.st +++ b/src/Famix-Fortran77-Generator/FamixFortran77Generator.class.st @@ -52,7 +52,8 @@ Class { 'typeIntrinsic', 'include', 'includedFile', - 'typeUnknown' + 'typeUnknown', + 'externalDeclaration' ], #category : #'Famix-Fortran77-Generator' } @@ -102,6 +103,10 @@ FamixFortran77Generator >> defineClasses [ comment comment: self fCommentEntityComment. + externalDeclaration := builder + newClassNamed: #ExternalDeclaration + comment: self externalDeclarationComment. + indexedFileAnchor := builder newClassNamed: #IndexedFileAnchor comment: self indexedFileAnchorComment. @@ -166,8 +171,8 @@ FamixFortran77Generator >> defineClasses [ comment: self typeIntrinsicComment. typeUnknown := builder - newClassNamed: #TypeUnknown - comment: self typeIntrinsicComment. + newClassNamed: #TypeUnknown + comment: self typeIntrinsicComment. variable := builder newClassNamed: #Variable @@ -185,6 +190,8 @@ FamixFortran77Generator >> defineHierarchy [ "character --|> typeIntrinsic. complex --|> typeIntrinsic." + + externalDeclaration --|> namedEntity. indexedFileAnchor --|> sourceAnchor. indexedFileAnchor --|> #TFileNavigation. @@ -310,6 +317,13 @@ FamixFortran77Generator >> defineRelations [ 'All inclusions made by this programUnits') ] +{ #category : #definition } +FamixFortran77Generator >> externalDeclarationComment [ + + ^ 'Im a external declaration. + [See more](https://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vn9d/index.html)' +] + { #category : #'class comment' } FamixFortran77Generator >> fCommentEntityComment [ From 8bd952ac2f41ec70a0c1fc3b4a748e845bf4585c Mon Sep 17 00:00:00 2001 From: uNouss Date: Fri, 6 Oct 2023 11:41:22 +0200 Subject: [PATCH 2/2] #31: Creation of `FamixF77Implicit` --- .../FamixF77Implicit.class.st | 49 +++++++++++++++++++ .../FamixF77ImportingContext.class.st | 14 ++++++ .../FamixF77TEntityCreator.trait.st | 7 +++ .../FamixFortran77Generator.class.st | 14 +++++- 4 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 src/Famix-Fortran77-Entities/FamixF77Implicit.class.st diff --git a/src/Famix-Fortran77-Entities/FamixF77Implicit.class.st b/src/Famix-Fortran77-Entities/FamixF77Implicit.class.st new file mode 100644 index 0000000..be790c9 --- /dev/null +++ b/src/Famix-Fortran77-Entities/FamixF77Implicit.class.st @@ -0,0 +1,49 @@ +" +[Implicit](https://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vn9v/index.html) statement +" +Class { + #name : #FamixF77Implicit, + #superclass : #FamixF77Entity, + #instVars : [ + '#letters => FMProperty', + '#type => FMProperty' + ], + #category : #'Famix-Fortran77-Entities-Entities' +} + +{ #category : #meta } +FamixF77Implicit class >> annotation [ + + + + + ^ self +] + +{ #category : #accessing } +FamixF77Implicit >> letters [ + + + + ^ letters +] + +{ #category : #accessing } +FamixF77Implicit >> letters: anObject [ + + letters := anObject +] + +{ #category : #accessing } +FamixF77Implicit >> type [ + + + + ^ type +] + +{ #category : #accessing } +FamixF77Implicit >> type: anObject [ + + type := anObject +] diff --git a/src/Famix-Fortran77-Entities/FamixF77ImportingContext.class.st b/src/Famix-Fortran77-Entities/FamixF77ImportingContext.class.st index 16b1671..dc8d3f7 100644 --- a/src/Famix-Fortran77-Entities/FamixF77ImportingContext.class.st +++ b/src/Famix-Fortran77-Entities/FamixF77ImportingContext.class.st @@ -36,6 +36,13 @@ FamixF77ImportingContext >> importExternalDeclaration [ ^ self importConcreteEntity: (self class fm3ClassNamed: #ExternalDeclaration) ] +{ #category : #importing } +FamixF77ImportingContext >> importImplicit [ + + + ^ self importConcreteEntity: (self class fm3ClassNamed: #Implicit) +] + { #category : #importing } FamixF77ImportingContext >> importInclude [ @@ -190,6 +197,13 @@ FamixF77ImportingContext >> shouldImportExternalDeclaration [ ^ self shouldImport: #ExternalDeclaration ] +{ #category : #testing } +FamixF77ImportingContext >> shouldImportImplicit [ + + + ^ self shouldImport: #Implicit +] + { #category : #testing } FamixF77ImportingContext >> shouldImportInclude [ diff --git a/src/Famix-Fortran77-Entities/FamixF77TEntityCreator.trait.st b/src/Famix-Fortran77-Entities/FamixF77TEntityCreator.trait.st index cc977ca..b0e8c83 100644 --- a/src/Famix-Fortran77-Entities/FamixF77TEntityCreator.trait.st +++ b/src/Famix-Fortran77-Entities/FamixF77TEntityCreator.trait.st @@ -37,6 +37,13 @@ FamixF77TEntityCreator >> newExternalDeclaration [ ^ self add: FamixF77ExternalDeclaration new ] +{ #category : #'entity creation' } +FamixF77TEntityCreator >> newImplicit [ + + + ^ self add: FamixF77Implicit new +] + { #category : #'entity creation' } FamixF77TEntityCreator >> newInclude [ diff --git a/src/Famix-Fortran77-Generator/FamixFortran77Generator.class.st b/src/Famix-Fortran77-Generator/FamixFortran77Generator.class.st index 3cb3ae3..8a101b3 100644 --- a/src/Famix-Fortran77-Generator/FamixFortran77Generator.class.st +++ b/src/Famix-Fortran77-Generator/FamixFortran77Generator.class.st @@ -53,7 +53,8 @@ Class { 'include', 'includedFile', 'typeUnknown', - 'externalDeclaration' + 'externalDeclaration', + 'implicit' ], #category : #'Famix-Fortran77-Generator' } @@ -106,6 +107,8 @@ FamixFortran77Generator >> defineClasses [ externalDeclaration := builder newClassNamed: #ExternalDeclaration comment: self externalDeclarationComment. + + implicit := builder newClassNamed: #Implicit comment: self implicitComment. indexedFileAnchor := builder newClassNamed: #IndexedFileAnchor @@ -270,6 +273,9 @@ FamixFortran77Generator >> defineProperties [ (comment property: #isEsope type: #Boolean defaultValue: false) comment: 'It is esope comment ?'. + + (implicit property: #letters type: #Object) comment: ''. + (implicit property: #type type: #FamixTType) comment: ''. (include property: #isLocal type: #Boolean) comment: 'Whether this is a local include (with "included.h") or a system one (with )'. @@ -336,6 +342,12 @@ FamixFortran77Generator >> fileEntityComment [ ^ 'a fortran file' ] +{ #category : #definition } +FamixFortran77Generator >> implicitComment [ + + ^ '[Implicit](https://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vn9v/index.html) statement' +] + { #category : #'private - utility' } FamixFortran77Generator >> implicitPropertyFor: anInstanceVar [ (anInstanceVar