compiler/PPCCompiler.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 07 Sep 2015 11:53:38 +0100
changeset 538 16e8536f5cfb
parent 537 fb212e14d1f4
child 543 02d90f0038fd
permissions -rw-r--r--
PPCConfiguration refactoring: [10/10]: Cleaned up compilation API The main compilation method is now PPParser>>compileWithOptions: Removed oither old and unused compilation methods from PPParser and other PetitCompiler classes.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
438
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/compiler' }"
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Smalltalk }"
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
537
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 536
diff changeset
     5
Object subclass:#PPCCompiler
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
     6
	instanceVariableNames:'context ir history passes'
438
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'PetitCompiler-Core'
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
    12
537
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 536
diff changeset
    13
!PPCCompiler class methodsFor:'as yet unclassified'!
438
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
538
16e8536f5cfb PPCConfiguration refactoring: [10/10]: Cleaned up compilation API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 537
diff changeset
    15
new
16e8536f5cfb PPCConfiguration refactoring: [10/10]: Cleaned up compilation API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 537
diff changeset
    16
    ^ self basicNew initialize
438
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
538
16e8536f5cfb PPCConfiguration refactoring: [10/10]: Cleaned up compilation API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 537
diff changeset
    18
    "Modified: / 07-09-2015 / 11:06:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
452
9f4558b3be66 Updated to PetitCompiler-JanKurs.111, PetitCompiler-Tests-JanKurs.51, PetitCompiler-Benchmarks-JanKurs.7, added PetitCompiler-Extras-Tests-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 438
diff changeset
    19
!
9f4558b3be66 Updated to PetitCompiler-JanKurs.111, PetitCompiler-Tests-JanKurs.51, PetitCompiler-Benchmarks-JanKurs.7, added PetitCompiler-Extras-Tests-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 438
diff changeset
    20
538
16e8536f5cfb PPCConfiguration refactoring: [10/10]: Cleaned up compilation API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 537
diff changeset
    21
newWithOptions: options
16e8536f5cfb PPCConfiguration refactoring: [10/10]: Cleaned up compilation API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 537
diff changeset
    22
    ^ self new options: options
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    23
538
16e8536f5cfb PPCConfiguration refactoring: [10/10]: Cleaned up compilation API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 537
diff changeset
    24
    "Created: / 07-09-2015 / 11:06:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
438
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
! !
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
537
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 536
diff changeset
    27
!PPCCompiler methodsFor:'accessing'!
438
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
    29
context
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
    30
    ^ context
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
    31
!
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
    32
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    33
options
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    34
    ^ context options
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    35
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    36
    "Modified: / 26-08-2015 / 19:48:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    37
!
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    38
538
16e8536f5cfb PPCConfiguration refactoring: [10/10]: Cleaned up compilation API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 537
diff changeset
    39
options: options
16e8536f5cfb PPCConfiguration refactoring: [10/10]: Cleaned up compilation API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 537
diff changeset
    40
    context options: options
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    41
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    42
    "Created: / 26-08-2015 / 19:56:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    43
!
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    44
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    45
passes
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    46
    ^ passes
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    47
!
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    48
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    49
passes:aCollection
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    50
    passes := aCollection asOrderedCollection
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    51
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    52
    "Modified: / 04-09-2015 / 14:14:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
438
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
! !
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
537
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 536
diff changeset
    55
!PPCCompiler methodsFor:'accessing - defaults'!
452
9f4558b3be66 Updated to PetitCompiler-JanKurs.111, PetitCompiler-Tests-JanKurs.51, PetitCompiler-Benchmarks-JanKurs.7, added PetitCompiler-Extras-Tests-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 438
diff changeset
    56
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    57
defaultPassesForTokenizingParser
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    58
    ^  {
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    59
        PPCTokenDetector .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    60
        PPCCacheFirstFollowPass .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    61
        PPCLL1Visitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    62
        PPCTokenizingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    63
        PPCMergingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    64
        PPCSpecializingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    65
        PPCInliningVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    66
        PPCMergingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    67
        PPCCheckingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    68
        PPCCacheFirstFollowPass .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    69
        PPCTokenizingCodeGenerator .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    70
        PPCFSAVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    71
        PPCTokenCodeGenerator .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    72
        PPCScannerCodeGenerator .    
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    73
    } asOrderedCollection.
452
9f4558b3be66 Updated to PetitCompiler-JanKurs.111, PetitCompiler-Tests-JanKurs.51, PetitCompiler-Benchmarks-JanKurs.7, added PetitCompiler-Extras-Tests-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 438
diff changeset
    74
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    75
    "Created: / 04-09-2015 / 15:56:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    76
!
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    77
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    78
defaultPassesForUniversalParser
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    79
    ^ {
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    80
        PPCTokenDetector.
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    81
        PPCCacheFirstFollowPass. 
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    82
        PPCSpecializingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    83
        PPCRecognizerComponentDetector .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    84
        PPCSpecializingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    85
        PPCInliningVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    86
        PPCMergingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    87
        PPCCheckingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    88
        PPCUniversalCodeGenerator
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    89
    } asOrderedCollection.
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    90
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    91
    "Created: / 04-09-2015 / 15:56:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
452
9f4558b3be66 Updated to PetitCompiler-JanKurs.111, PetitCompiler-Tests-JanKurs.51, PetitCompiler-Benchmarks-JanKurs.7, added PetitCompiler-Extras-Tests-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 438
diff changeset
    92
! !
9f4558b3be66 Updated to PetitCompiler-JanKurs.111, PetitCompiler-Tests-JanKurs.51, PetitCompiler-Benchmarks-JanKurs.7, added PetitCompiler-Extras-Tests-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 438
diff changeset
    93
537
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 536
diff changeset
    94
!PPCCompiler methodsFor:'adding / removing passes'!
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
    95
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
    96
removePass: pass
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
    97
    | index |
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
    98
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
    99
    self initializePassesIfNotAlready.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   100
    [ 
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   101
        index := passes indexOf: pass.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   102
        index ~~ 0
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   103
    ] whileTrue:[ 
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   104
        passes removeAtIndex: index
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   105
    ].
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   106
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   107
    "Created: / 04-09-2015 / 11:24:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   108
    "Modified: / 04-09-2015 / 16:02:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   109
! !
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   110
537
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 536
diff changeset
   111
!PPCCompiler methodsFor:'compiling'!
438
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   113
compile: aPPParser
538
16e8536f5cfb PPCConfiguration refactoring: [10/10]: Cleaned up compilation API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 537
diff changeset
   114
    "Compiles given parser. Return an *instance* of the compiler
16e8536f5cfb PPCConfiguration refactoring: [10/10]: Cleaned up compilation API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 537
diff changeset
   115
     parser which is ready to use (repeatedly)"
16e8536f5cfb PPCConfiguration refactoring: [10/10]: Cleaned up compilation API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 537
diff changeset
   116
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   117
    | time |
538
16e8536f5cfb PPCConfiguration refactoring: [10/10]: Cleaned up compilation API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 537
diff changeset
   118
    self input: aPPParser.    
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   119
    time := [ self compile ] timeToRun.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   120
    ((Smalltalk respondsTo:#isSmalltalkX) and:[Smalltalk isSmalltalkX]) ifFalse:[ 
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   121
        "Assume Pharo"
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   122
        time := time asMilliSeconds.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   123
    ].
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   124
    self reportTime: time.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   125
    
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   126
    ^ ir
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   127
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   128
    "Modified: / 17-08-2015 / 13:06:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
538
16e8536f5cfb PPCConfiguration refactoring: [10/10]: Cleaned up compilation API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 537
diff changeset
   129
    "Modified (comment): / 07-09-2015 / 10:49:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   130
! !
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   131
537
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 536
diff changeset
   132
!PPCCompiler methodsFor:'initialization'!
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   133
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   134
initialize
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   135
    history := OrderedCollection new.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   136
    context := PPCCompilationContext new.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   137
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   138
    "Modified: / 04-09-2015 / 15:56:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   139
!
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   140
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   141
initializePassesIfNotAlready
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   142
    passes isNil ifTrue:[ 
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   143
        context options tokenize ifTrue:[ 
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   144
            passes := self defaultPassesForTokenizingParser
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   145
        ] ifFalse:[ 
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   146
            passes := self defaultPassesForUniversalParser
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   147
        ].
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   148
    ].
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   149
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   150
    "Created: / 04-09-2015 / 16:02:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   151
! !
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   152
537
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 536
diff changeset
   153
!PPCCompiler methodsFor:'private'!
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   154
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   155
buildClass: clazz
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   156
    |  builder |
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   157
    builder := PPCClassBuilder new.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   158
    
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   159
    builder compiledClassName: clazz name.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   160
    builder compiledSuperclass: clazz superclass.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   161
    builder methodDictionary: clazz methodDictionary.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   162
    builder constants: clazz constants.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   163
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   164
    ^ builder compileClass.	
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   165
!
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   166
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   167
compile
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   168
    self runPasses.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   169
    self generateScanner.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   170
    self generateParser.
518
a6d8b93441b0 Portability fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 515
diff changeset
   171
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   172
    "Modified: / 07-09-2015 / 07:53:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   173
!
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   174
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   175
copyTree: somethingTransformable
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   176
    ^ somethingTransformable transform: [ :e | e copy ]
438
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
!
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   179
generateParser
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   180
    | parserClass parserSuper rootMethod |
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   181
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   182
    context options generate ifFalse:[
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   183
        ^ self
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   184
    ].
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   185
    context parserClass methodDictionary isEmpty ifTrue:[ 
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   186
        ^ self
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   187
    ].
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   188
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   189
    parserSuper := context options parserSuperclass.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   190
    parserSuper isNil ifTrue:[ 
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   191
        parserSuper := context options tokenize 
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   192
                        ifTrue:[ PPTokenizingCompiledParser ]
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   193
                        ifFalse:[ PPCompiledParser ]   
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   194
    ].
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   195
    rootMethod := context parserClass propertyAt:#rootMethod.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   196
    context parserClass name:context options parserName.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   197
    context parserClass superclass: parserSuper.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   198
    parserClass := self buildClass:context parserClass.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   199
    parserClass startSymbol:rootMethod methodName.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   200
    self remember:parserClass as:#parser.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   201
    ir := parserClass new
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   202
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   203
    "Modified: / 25-08-2015 / 00:05:49 / Jan Vrany"
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   204
    "Modified: / 04-09-2015 / 16:07:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   205
!
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   206
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   207
generateScanner
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   208
    | scanner |
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   209
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   210
    context options generate ifFalse:[
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   211
        ^ self
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   212
    ].
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   213
    context scannerClass methodDictionary isEmpty ifTrue:[ 
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   214
        ^ self
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   215
    ].
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   216
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   217
    context scannerClass name:context options scannerName.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   218
    context scannerClass superclass:context options scannerSuperclass.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   219
    scanner := (self buildClass:context scannerClass).
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   220
    context parserClass addConstant:scanner as:#scannerClass.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   221
    ir := scanner.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   222
    self remember:scanner as:#scanner
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   223
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   224
    "Modified: / 25-08-2015 / 00:06:49 / Jan Vrany"
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   225
    "Modified: / 04-09-2015 / 15:33:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   226
!
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   227
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   228
input: aPPParser
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   229
    ir := aPPParser asCompilerTree.    
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   230
    self remember: (self copyTree: ir) as: #input
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   231
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   232
    "Modified (format): / 29-08-2015 / 07:18:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
524
f6f68d32de73 Merged in PetitCompiler-JanVrany.170, PetitCompiler-Tests-JanKurs.116, PetitCompiler-Extras-Tests-JanKurs.29, PetitCompiler-Benchmarks-JanKurs.19
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 515
diff changeset
   233
!
f6f68d32de73 Merged in PetitCompiler-JanVrany.170, PetitCompiler-Tests-JanKurs.116, PetitCompiler-Extras-Tests-JanKurs.29, PetitCompiler-Benchmarks-JanKurs.19
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 515
diff changeset
   234
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   235
ir
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   236
    ^ ir
438
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
!
20598d7ce9fa Updated to PetitCompiler-JanKurs.100, PetitCompiler-Tests-JanKurs.44 and PetitCompiler-Benchmarks-JanKurs.4
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   239
ir: whatever
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   240
    ir := whatever
515
b5316ef15274 Updated to PetitCompiler-JanKurs.160, PetitCompiler-Tests-JanKurs.112, PetitCompiler-Extras-Tests-JanKurs.25, PetitCompiler-Benchmarks-JanKurs.17
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 502
diff changeset
   241
!
b5316ef15274 Updated to PetitCompiler-JanKurs.160, PetitCompiler-Tests-JanKurs.112, PetitCompiler-Extras-Tests-JanKurs.25, PetitCompiler-Benchmarks-JanKurs.17
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 502
diff changeset
   242
524
f6f68d32de73 Merged in PetitCompiler-JanVrany.170, PetitCompiler-Tests-JanKurs.116, PetitCompiler-Extras-Tests-JanKurs.29, PetitCompiler-Benchmarks-JanKurs.19
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 515
diff changeset
   243
remember: value as: key
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   244
    context options debug ifTrue: [ 
524
f6f68d32de73 Merged in PetitCompiler-JanVrany.170, PetitCompiler-Tests-JanKurs.116, PetitCompiler-Extras-Tests-JanKurs.29, PetitCompiler-Benchmarks-JanKurs.19
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 515
diff changeset
   245
        history add: key -> value.
f6f68d32de73 Merged in PetitCompiler-JanVrany.170, PetitCompiler-Tests-JanKurs.116, PetitCompiler-Extras-Tests-JanKurs.29, PetitCompiler-Benchmarks-JanKurs.19
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 515
diff changeset
   246
    ]
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   247
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   248
    "Modified: / 28-08-2015 / 14:14:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   249
!
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   250
515
b5316ef15274 Updated to PetitCompiler-JanKurs.160, PetitCompiler-Tests-JanKurs.112, PetitCompiler-Extras-Tests-JanKurs.25, PetitCompiler-Benchmarks-JanKurs.17
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 502
diff changeset
   251
reportTime: timeInMs
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   252
    context options profile ifTrue: [ 
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   253
        Transcript show: 'Time to compile: '; show: timeInMs asString; show: ' ms'; cr.
515
b5316ef15274 Updated to PetitCompiler-JanKurs.160, PetitCompiler-Tests-JanKurs.112, PetitCompiler-Extras-Tests-JanKurs.25, PetitCompiler-Benchmarks-JanKurs.17
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 502
diff changeset
   254
    ]
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   255
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   256
    "Modified: / 07-09-2015 / 07:55:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   257
!
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   258
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   259
runPasses
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   260
    self initializePassesIfNotAlready.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   261
    passes do:[:each | self runPass: each  ]
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   262
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   263
    "Created: / 07-09-2015 / 07:53:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
515
b5316ef15274 Updated to PetitCompiler-JanKurs.160, PetitCompiler-Tests-JanKurs.112, PetitCompiler-Extras-Tests-JanKurs.25, PetitCompiler-Benchmarks-JanKurs.17
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 502
diff changeset
   264
! !
b5316ef15274 Updated to PetitCompiler-JanKurs.160, PetitCompiler-Tests-JanKurs.112, PetitCompiler-Extras-Tests-JanKurs.25, PetitCompiler-Benchmarks-JanKurs.17
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 502
diff changeset
   265
537
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 536
diff changeset
   266
!PPCCompiler methodsFor:'running'!
532
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   267
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   268
runPass: pass
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   269
    | p |
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   270
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   271
    p := pass asPPCPass.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   272
    ir := p run: ir in: context.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   273
    self remember:(self copyTree:ir) as:p class name
532
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   274
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   275
    "Created: / 26-08-2015 / 22:35:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   276
    "Modified: / 29-08-2015 / 07:16:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
532
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   277
! !
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   278
537
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 536
diff changeset
   279
!PPCCompiler class methodsFor:'documentation'!
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   280
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   281
version_HG
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   282
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   283
    ^ '$Changeset: <not expanded> $'
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   284
! !
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   285