compiler/PPCConfiguration.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 07 Sep 2015 08:03:02 +0100
changeset 536 548996aca274
parent 535 a8feb0f47574
permissions -rw-r--r--
PPCConfiguration refactoring: [8/10]: Cleaned up compilation API. Methods in PPCConfiguration not meant for public use have been moved to private protocol to make it clear.
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
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
     5
Object subclass:#PPCConfiguration
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
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
    13
!PPCConfiguration class methodsFor:'as yet unclassified'!
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
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
    15
default
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
    16
    ^ self universal
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
!
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
    18
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
    19
new
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
    20
    ^ self basicNew
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
    21
        initialize;
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
    22
        yourself
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
    23
!
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
    24
464
f6d77fee9811 Updated to PetitCompiler-JanKurs.118, PetitCompiler-Tests-JanKurs.46, PetitCompiler-Extras-Tests-JanKurs.11, and PetitCompiler-Benchmarks-JanKurs.11
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 452
diff changeset
    25
tokenizing
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    26
    | options |
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    27
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    28
    options := PPCCompilationOptions default.
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    29
    options tokenize: true.
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    30
    ^ PPCConfiguration new
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    31
        options: options;
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    32
        yourself
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    33
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    34
    "Modified: / 04-09-2015 / 16:21:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
464
f6d77fee9811 Updated to PetitCompiler-JanKurs.118, PetitCompiler-Tests-JanKurs.46, PetitCompiler-Extras-Tests-JanKurs.11, and PetitCompiler-Benchmarks-JanKurs.11
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 452
diff changeset
    35
!
f6d77fee9811 Updated to PetitCompiler-JanKurs.118, PetitCompiler-Tests-JanKurs.46, PetitCompiler-Extras-Tests-JanKurs.11, and PetitCompiler-Benchmarks-JanKurs.11
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 452
diff changeset
    36
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
    37
universal
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    38
    | options |
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    39
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    40
    options := PPCCompilationOptions default.
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    41
    options tokenize: false.
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    42
    ^ PPCConfiguration new
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    43
        options: options;
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    44
        yourself
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    45
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    46
    "Modified: / 04-09-2015 / 16:21: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
    47
! !
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
    48
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
    49
!PPCConfiguration methodsFor:'accessing'!
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
    50
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
    51
context
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
    52
    ^ context
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
    53
!
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
    54
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    55
options
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    56
    ^ context options
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    57
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    58
    "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
    59
!
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    60
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    61
options: aPPCCompilationOptions
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    62
    context options: aPPCCompilationOptions
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    63
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    64
    "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
    65
!
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    66
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    67
passes
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    68
    ^ passes
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    69
!
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    70
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    71
passes:aCollection
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    72
    passes := aCollection asOrderedCollection
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    73
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    74
    "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
    75
! !
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
    76
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
    77
!PPCConfiguration 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
    78
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    79
defaultPassesForTokenizingParser
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    80
    ^  {
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    81
        PPCTokenDetector .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    82
        PPCCacheFirstFollowPass .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    83
        PPCLL1Visitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    84
        PPCTokenizingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    85
        PPCMergingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    86
        PPCSpecializingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    87
        PPCInliningVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    88
        PPCMergingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    89
        PPCCheckingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    90
        PPCCacheFirstFollowPass .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    91
        PPCTokenizingCodeGenerator .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    92
        PPCFSAVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    93
        PPCTokenCodeGenerator .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    94
        PPCScannerCodeGenerator .    
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    95
    } 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
    96
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    97
    "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
    98
!
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
    99
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   100
defaultPassesForUniversalParser
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   101
    ^ {
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   102
        PPCTokenDetector.
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   103
        PPCCacheFirstFollowPass. 
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   104
        PPCSpecializingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   105
        PPCRecognizerComponentDetector .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   106
        PPCSpecializingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   107
        PPCInliningVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   108
        PPCMergingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   109
        PPCCheckingVisitor .
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   110
        PPCUniversalCodeGenerator
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   111
    } asOrderedCollection.
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   112
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   113
    "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
   114
! !
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
   115
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   116
!PPCConfiguration methodsFor:'adding / removing passes'!
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   117
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   118
removePass: pass
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   119
    | index |
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   120
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   121
    self initializePassesIfNotAlready.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   122
    [ 
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   123
        index := passes indexOf: pass.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   124
        index ~~ 0
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   125
    ] whileTrue:[ 
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   126
        passes removeAtIndex: index
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
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   129
    "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
   130
    "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
   131
! !
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   132
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
   133
!PPCConfiguration 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
   134
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   135
compile: aPPParser
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   136
    | time |
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   137
    self input: aPPParser.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   138
    
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   139
    time := [ self compile ] timeToRun.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   140
    ((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
   141
        "Assume Pharo"
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   142
        time := time asMilliSeconds.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   143
    ].
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   144
    self reportTime: time.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   145
    
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   146
    ^ ir
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
    "Modified: / 17-08-2015 / 13:06:31 / 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
   149
! !
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   150
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   151
!PPCConfiguration methodsFor:'initialization'!
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   152
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   153
initialize
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   154
    history := OrderedCollection new.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   155
    context := PPCCompilationContext new.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   156
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   157
    "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
   158
!
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   159
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   160
initializePassesIfNotAlready
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   161
    passes isNil ifTrue:[ 
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   162
        context options tokenize ifTrue:[ 
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   163
            passes := self defaultPassesForTokenizingParser
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   164
        ] ifFalse:[ 
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   165
            passes := self defaultPassesForUniversalParser
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   166
        ].
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   167
    ].
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   168
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   169
    "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
   170
! !
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   171
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   172
!PPCConfiguration methodsFor:'private'!
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   173
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   174
buildClass: clazz
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   175
    |  builder |
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   176
    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
   177
    
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   178
    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
   179
    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
   180
    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
   181
    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
   182
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   183
    ^ builder compileClass.	
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   184
!
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   185
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   186
compile
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   187
    self runPasses.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   188
    self generateScanner.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   189
    self generateParser.
518
a6d8b93441b0 Portability fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 515
diff changeset
   190
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   191
    "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
   192
!
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   193
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   194
copyTree: somethingTransformable
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   195
    ^ 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
   196
!
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
   197
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   198
generateParser
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   199
    | 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
   200
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   201
    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
   202
        ^ self
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   203
    ].
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   204
    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
   205
        ^ self
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   206
    ].
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   207
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   208
    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
   209
    parserSuper isNil ifTrue:[ 
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   210
        parserSuper := context options tokenize 
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   211
                        ifTrue:[ PPTokenizingCompiledParser ]
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   212
                        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
   213
    ].
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   214
    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
   215
    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
   216
    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
   217
    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
   218
    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
   219
    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
   220
    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
   221
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   222
    "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
   223
    "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
   224
!
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   225
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   226
generateScanner
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   227
    | scanner |
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   228
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   229
    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
   230
        ^ self
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   231
    ].
535
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   232
    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
   233
        ^ self
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   234
    ].
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   235
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   236
    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
   237
    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
   238
    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
   239
    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
   240
    ir := scanner.
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   241
    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
   242
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   243
    "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
   244
    "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
   245
!
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   246
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   247
input: aPPParser
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   248
    ir := aPPParser asCompilerTree.    
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   249
    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
   250
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   251
    "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
   252
!
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
   253
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   254
ir
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   255
    ^ 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
   256
!
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
   257
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   258
ir: whatever
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   259
    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
   260
!
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
   261
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
   262
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
   263
    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
   264
        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
   265
    ]
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   266
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   267
    "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
   268
!
a8feb0f47574 PPCConfiguration refactoring: [7/10]: allow to configure passes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 534
diff changeset
   269
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
   270
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
   271
    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
   272
        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
   273
    ]
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   274
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   275
    "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
   276
!
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   277
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   278
runPasses
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   279
    self initializePassesIfNotAlready.
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   280
    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
   281
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   282
    "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
   283
! !
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
   284
532
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   285
!PPCConfiguration methodsFor:'running'!
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   286
534
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   287
runPass: pass
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   288
    | p |
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   289
a949c4fe44df PPCConfiguration refactoring: [6/10]: use #runPass: instead of self-sends.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 532
diff changeset
   290
    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
   291
    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
   292
    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
   293
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   294
    "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
   295
    "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
   296
! !
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   297
536
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   298
!PPCConfiguration class methodsFor:'documentation'!
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   299
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   300
version_HG
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   301
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   302
    ^ '$Changeset: <not expanded> $'
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   303
! !
548996aca274 PPCConfiguration refactoring: [8/10]: Cleaned up compilation API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 535
diff changeset
   304