GSTFileReader.st
author Claus Gittinger <cg@exept.de>
Wed, 26 Feb 2020 01:22:17 +0100
changeset 4560 4d5d025b2aab
parent 4355 75047ebdae6d
permissions -rw-r--r--
#BUGFIX by exept class: CVSSourceCodeManager class changed: #executeCVSCommand:module:inDirectory:log:pipe:orElseOutputTo:errorTo: nil-nonNil s. true-false confusion
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4355
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
     1
"{ Encoding: utf8 }"
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
     2
4352
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
 COPYRIGHT (c) 2018 by eXept Software AG
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
              All Rights Reserved
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 This software is furnished under a license and may be used
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
 hereby transferred.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ Package: 'stx:libbasic3' }"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
"{ NameSpace: Smalltalk }"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
Object subclass:#GSTFileReader
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	instanceVariableNames:'changeSet source parser nameSpace inStream className
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
		fullClassName'
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	classVariableNames:''
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	poolDictionaries:''
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
	category:'Kernel-Classes-Support'
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
!
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
!GSTFileReader class methodsFor:'documentation'!
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
copyright
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
 COPYRIGHT (c) 2018 by eXept Software AG
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
              All Rights Reserved
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 This software is furnished under a license and may be used
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 only in accordance with the terms of that license and with the
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 inclusion of the above copyright notice.   This software may not
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
 be provided or otherwise made available to, or used by, any
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
 other person.  No title to or ownership of the software is
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
 hereby transferred.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
!
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
documentation
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    I know how to read GST-smalltalk source files as a change set.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
! !
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
!GSTFileReader methodsFor:'reading - API'!
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
changeSetFromStream:aStream
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    changeSet := ChangeSet new.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    source := aStream contentsAsString.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
    inStream := source readStream.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    self readDefinitions.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    ^ changeSet
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
    "
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
     self new 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
        changeSetFromStream:('/Users/cg/Downloads/smalltalk/shampoo/shampoo/auth.st' 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
                        asFilename readStream).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
     self new 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
        changeSetFromStream:('/Users/cg/Downloads/smalltalk/shampoo/shampoo/hacks.st' 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
                        asFilename readStream).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
     '/Users/cg/Downloads/smalltalk/shampoo/shampoo' asFilename directoryContentsAsFilenamesDo:[:fn |                    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
        fn suffix = 'st' ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
           (self new changeSetFromStream:(fn readStream)) inspect
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
        ]
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
      ]    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    "
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    "Created: / 22-09-2018 / 19:09:29 / Claus Gittinger"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    "Modified (comment): / 23-09-2018 / 00:08:51 / Claus Gittinger"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
! !
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
!GSTFileReader methodsFor:'reading - private'!
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
readClass:expr
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    "already read 'name subclass:name'"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    |superClassName superClass 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
     category comment instVarNameString definitionSelector change
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
     readingClassAttributes|
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
4355
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
    86
    (expr receiver isConstant and:[expr receiver value isNil]) ifTrue:[
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
    87
        superClass := nil.
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
    88
    ] ifFalse:[    
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
    89
        superClassName := expr receiver name.
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
    90
        superClass := nameSpace classNamed:superClassName.
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
    91
        superClass isNil ifTrue:[
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
    92
            superClass := Smalltalk classNamed:superClassName.
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
    93
        ].    
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
    94
    ].
4352
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    className := expr arg1 name.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    self assert:(parser tokenType == $[ ).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    instVarNameString := ''.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    readingClassAttributes := true.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    [readingClassAttributes] whileTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
        parser tokenType == $| ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
            parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
            [ parser tokenType == $| ] whileFalse:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
                |var|
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
                var := parser variable.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
                instVarNameString := instVarNameString , ' ' , var name.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
                parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
            ].
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
            parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
        ] ifFalse:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
            (parser token = '<') ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
                parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
                parser token = 'category:' ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
                    parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
                    self assert:(parser tokenType == #String).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
                    category := parser tokenValue.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
                    parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
                ] ifFalse:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
                    parser token = 'comment:' ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
                        parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
                        self assert:(parser tokenType == #String).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
                        comment := parser tokenValue.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
                        parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
                    ] ifFalse:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
                        self halt.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
                    ].
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
                ].
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
                self assert:(parser token = '>').
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
                parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
            ] ifFalse:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
                readingClassAttributes := false
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
            ]    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
        ].    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    ].
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    definitionSelector := #'subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:'.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    fullClassName :=     
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
        ((nameSpace ? Smalltalk) ~~ Smalltalk) 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
            ifTrue:[ nameSpace name,'::',className ]
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
            ifFalse:[ className ].
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
        
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    change := ClassDefinitionChange new.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    change className:fullClassName.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
    change definitionSelector:definitionSelector.
4355
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   150
    superClassName notNil ifTrue:[ change superClassName:superClassName ].
4352
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    change instanceVariableString:instVarNameString.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    "/ change classVariableString:arg evaluate.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    "/ change poolDictionaries:arg evaluate.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
    change category:category.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
    changeSet add:change.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
    comment notNil ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
        change := ClassCommentChange className:fullClassName.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
        change comment:comment.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
        changeSet add:change.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    ].                
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
    self readMethods.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
    "
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
     self new 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
        changeSetFromStream:('/Users/cg/Downloads/smalltalk/shampoo/shampoo/auth.st' 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
                        asFilename readStream).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
    "
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
    "Created: / 22-09-2018 / 22:50:24 / Claus Gittinger"
4355
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   171
    "Modified: / 23-09-2018 / 02:12:04 / Claus Gittinger"
4352
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
!
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
readDefinitions
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    |expr|
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
    parser := Parser for:inStream in:nil.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    parser parserFlags allowQualifiedNames:true.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
    parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    [inStream atEnd] whileFalse:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
        expr := parser expression.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
        (expr isMessage 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
          and:[ (expr selector = 'current:')
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
          and:[ (expr receiver isGlobalVariableNamed:'Namespace') ]]
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
        ) ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
            self assert:(parser tokenType == $[ ).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
            parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
            nameSpace := NameSpace name:(expr arg1 name).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
            self readNamespace.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
            self assert:(parser tokenType == $] ).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
            parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
        ] ifFalse:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
            (expr isMessage 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
              and:[ (expr selector = 'extend')
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
              and:[ (expr receiver isGlobalVariable) ]]
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
            ) ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
                self assert:(parser tokenType == $[ ).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
                parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
                className := fullClassName := (expr receiver name).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
                self readMethods.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
            ] ifFalse:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
                (expr isMessage 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
                  and:[ (expr selector = 'extend')
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
                  and:[ expr receiver isMessage
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
                        and:[ (expr receiver selector = 'class')
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
                        and:[ (expr receiver receiver isGlobalVariable) ]]]]
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
                ) ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
                    self assert:(parser tokenType == $[ ).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
                    parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
                    className := fullClassName := (expr receiver receiver name),' class'.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
                    self readMethods.
4355
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   214
                ] ifFalse:[ 
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   215
                    (expr isVariable and:[expr name = 'Eval']) ifTrue:[
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   216
                        self assert:(parser tokenType == $[ ).
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   217
                        parser nextToken.
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   218
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   219
                        parser parseMethodBodyOrEmpty.
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   220
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   221
                        self assert:(parser tokenType == $] ).
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   222
                        parser nextToken.
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   223
                    ] ifFalse:[    
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   224
                        self halt.
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   225
                    ].    
4352
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
                ].    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
            ].    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
        ].    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
    ].
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
    "
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
     self new 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
        changeSetFromStream:('/Users/cg/Downloads/smalltalk/shampoo/shampoo/auth.st' 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
                        asFilename readStream).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
     self new 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
        changeSetFromStream:('/Users/cg/Downloads/smalltalk/shampoo/shampoo/hacks.st' 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
                        asFilename readStream).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
     self new 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
        changeSetFromStream:('/Users/cg/Downloads/smalltalk/shampoo/shampoo/responses.st' 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
                        asFilename readStream).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
                        
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
     '/Users/cg/Downloads/smalltalk/shampoo/shampoo' asFilename directoryContentsAsFilenamesDo:[:fn |                    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
        fn suffix = 'st' ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
           (self new changeSetFromStream:(fn readStream)) inspect
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
        ]
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
      ]    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
    "
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
    "Created: / 22-09-2018 / 22:48:24 / Claus Gittinger"
4355
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   252
    "Modified: / 23-09-2018 / 01:59:24 / Claus Gittinger"
4352
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
!
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
readMethods
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
    "already read 'name subclass:name'"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
    |methodSelector methodArgNames
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
     startPos endPos methodSource change
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
     specStartPos specEndPos specSource|
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
    [ parser token == $] ] whileFalse:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
        |expr methodClassName isClassMethod statements methodCategory|
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
        methodClassName := fullClassName.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
        isClassMethod := false.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
        ((parser tokenType == #Identifier)
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
        and:[ (parser token = className)]) ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
            parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
            parser token = 'class' ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
                isClassMethod := true.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
                parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
                methodClassName := methodClassName,' class'.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
            ].    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
            self assert:(parser token = '>>').
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
            parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
        ].
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
        
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
        specStartPos := parser tokenPosition.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
        parser release.            
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
        parser parseMethodSpec.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
        methodSelector := parser selector.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
        methodArgNames := parser methodArgs.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
        specEndPos := parser tokenPosition - 1.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
        specSource := (source copyFrom:specStartPos to:specEndPos) withoutSeparators.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
        self assert:(parser tokenType == $[ ).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
        parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
        startPos := parser tokenPosition.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
        statements := parser parseMethodBodyOrEmpty.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
        endPos := parser tokenPosition-1.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
        self assert:(parser tokenType == $] ).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
        parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
        methodSource := source copyFrom:startPos to:endPos.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
        change := MethodDefinitionChange 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
                    className:methodClassName
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
                    selector:methodSelector
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
                    source:(specSource,Character cr,methodSource)
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
                    category:methodCategory.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
        changeSet add:change.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
    ].
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
    parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
    "
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
     self new 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
        changeSetFromStream:('/Users/cg/Downloads/smalltalk/shampoo/shampoo/responses.st' 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
                        asFilename readStream).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
    "
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
    "Created: / 22-09-2018 / 22:54:29 / Claus Gittinger"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
    "Modified (comment): / 23-09-2018 / 01:01:50 / Claus Gittinger"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
!
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
readNamespace
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
    "already read 'Namespace'"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
    "Namespace current: <name> [ <code for namespace> ]"
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
    |expr|
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
    [
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
        inStream atEnd not
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
        and:[ parser tokenType ~~ $] ]
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
    ] whileTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
        expr := parser expression.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
        (expr isMessage 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
          and:[ (expr selector == #'subclass:')
4355
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   335
          and:[ ((expr receiver isConstant and:[expr receiver value isNil])
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   336
                or:[ expr receiver isGlobalVariable ])
4352
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
          and:[ (expr arg1 isGlobalVariable) ]]]
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
        ) ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
            self readClass:expr.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
        ] ifFalse:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
            (expr isMessage 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
              and:[ (expr selector = 'extend')
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
              and:[ (expr receiver isGlobalVariable) ]]
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
            ) ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
                self assert:(parser tokenType == $[ ).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
                parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
                className := (expr receiver name).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
                fullClassName := nameSpace name,'::',className.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
                self readMethods.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
            ] ifFalse:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
                (expr isMessage 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
                  and:[ (expr selector = 'extend')
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
                  and:[ expr receiver isMessage
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
                        and:[ (expr receiver selector = 'class')
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
                        and:[ (expr receiver receiver isGlobalVariable) ]]]]
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
                ) ifTrue:[
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
                    self assert:(parser tokenType == $[ ).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
                    parser nextToken.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
                    className := (expr receiver receiver name),' class'.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
                    fullClassName := nameSpace name,'::',className.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
                    self readMethods.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
                ] ifFalse:[    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
                     self halt.
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
                ].    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
            ].    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
        ].    
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
    ].
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
    "
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
     self new 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
        changeSetFromStream:('/Users/cg/Downloads/smalltalk/shampoo/shampoo/auth.st' 
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
                        asFilename readStream).
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
    "
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
    "Created: / 22-09-2018 / 22:49:59 / Claus Gittinger"
4355
75047ebdae6d #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4352
diff changeset
   376
    "Modified: / 23-09-2018 / 02:09:14 / Claus Gittinger"
4352
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
! !
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
!GSTFileReader class methodsFor:'documentation'!
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
version_CVS
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
    ^ '$Header$'
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
! !
2683d261d4c8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384