compiler/PPCTokenizingConfiguration.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 26 Aug 2015 23:01:00 +0100
changeset 532 132d7898a2a1
parent 531 dc3d13c2837d
child 534 a949c4fe44df
permissions -rw-r--r--
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass ... representing a compilation pass over the PPCNode tree. The pass has a common api method: #run:in: which is not used in PPCConfiguration. This simplifed the code and removed some code duplication.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/compiler' }"
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:
diff changeset
     2
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:
diff changeset
     3
"{ NameSpace: Smalltalk }"
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:
diff changeset
     4
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:
diff changeset
     5
PPCConfiguration subclass:#PPCTokenizingConfiguration
530
e36906742693 PPCConfiguration refactoring: [2/10]: introduced PPCCompilationContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 529
diff changeset
     6
	instanceVariableNames:''
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:
diff changeset
     7
	classVariableNames:''
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:
diff changeset
     8
	poolDictionaries:''
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:
diff changeset
     9
	category:'PetitCompiler-Core'
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:
diff changeset
    10
!
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:
diff changeset
    11
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:
diff changeset
    12
!PPCTokenizingConfiguration methodsFor:'compiling'!
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:
diff changeset
    13
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
    14
buildClass: clazz
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: 464
diff changeset
    15
    |  builder |
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: 464
diff changeset
    16
    builder := PPCClassBuilder new.
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: 464
diff changeset
    17
    
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
    18
    builder compiledClassName: clazz name.
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
    19
    builder compiledSuperclass: clazz superclass.
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
    20
    builder methodDictionary: clazz methodDictionary.
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
    21
    builder constants: clazz constants.
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: 464
diff changeset
    22
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: 464
diff changeset
    23
    ^ builder compileClass.	
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: 464
diff changeset
    24
!
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: 464
diff changeset
    25
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:
diff changeset
    26
invokePhases
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:
diff changeset
    27
    self toPPCIr.
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:
diff changeset
    28
    self createTokens.
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:
diff changeset
    29
    self cacheFirstFollow.
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:
diff changeset
    30
    self createLL1Choices.
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:
diff changeset
    31
    self tokenize.
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:
diff changeset
    32
    self merge.
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:
diff changeset
    33
    self specialize.
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:
diff changeset
    34
    self createRecognizingComponents.
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:
diff changeset
    35
    self specialize.
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:
diff changeset
    36
    self inline.
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:
diff changeset
    37
    self merge.
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:
diff changeset
    38
    self check.	
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:
diff changeset
    39
    self cacheFirstFollow.
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
    40
    self buildParserClazz.
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
    41
    self unmarkConsumeTokensForInline.
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
    42
    self createFSAs.
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
    43
    self buildScannerTokens.
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
    44
    self buildScannerScans.	
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
    45
    self generateScanner.
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
    46
    self generateParser.
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:
diff changeset
    47
! !
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:
diff changeset
    48
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    49
!PPCTokenizingConfiguration methodsFor:'error handling'!
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:
diff changeset
    50
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
    51
buildParserClazz
532
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
    52
    self runPass: PPCTokenizingCodeGenerator.
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    53
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    54
    "Modified: / 25-08-2015 / 00:07:38 / Jan Vrany <jan.vrany@fit."
532
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
    55
    "Modified: / 26-08-2015 / 22:47:35 / 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:
diff changeset
    56
!
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:
diff changeset
    57
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
    58
buildScannerScans
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
    59
    | fsas  generator |
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    60
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
    61
    "TODO JK: Perhpas write separate visitor for this?"
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
    62
    fsas := IdentitySet new.
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    63
    fsas addAll:(ir allNodes 
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    64
                select:[:node | node hasFsa ]
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    65
                thenCollect:[:node | node fsa ]).
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    66
    fsas addAll:(ir allNodes 
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    67
                select:[:node | node hasNextFsa ]
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    68
                thenCollect:[:node | node nextFsa ]).
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    69
    fsas := fsas reject:[:fsa | fsa hasDistinctRetvals not ].
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    70
    generator := (PPCScannerCodeGenerator new)
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    71
            clazz:context scannerClass;
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    72
            options:context options;
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    73
            yourself.
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    74
    fsas do:[:fsa | 
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    75
        generator generate:fsa
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    76
    ].
530
e36906742693 PPCConfiguration refactoring: [2/10]: introduced PPCCompilationContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 529
diff changeset
    77
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    78
    "Modified: / 25-08-2015 / 00:04:43 / Jan Vrany <jan.vrany@fit."
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    79
    "Modified: / 26-08-2015 / 19:57:38 / 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
    80
!
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
    81
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
    82
buildScannerTokens
532
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
    83
    self runPass: PPCTokenCodeGenerator
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    84
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    85
    "Modified: / 25-08-2015 / 00:04:46 / Jan Vrany <jan.vrany@fit."
532
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
    86
    "Modified: / 26-08-2015 / 22:53:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    87
!
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    88
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    89
generateParser
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    90
    | parserClass  rootMethod |
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: 464
diff changeset
    91
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    92
    context options generate ifFalse:[
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    93
        ^ self
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    94
    ].
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    95
    rootMethod := context parserClass propertyAt:#rootMethod.
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    96
    context parserClass name:context options parserName.
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    97
    context parserClass superclass:context options parserSuperclass.
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    98
    parserClass := self buildClass:context parserClass.
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
    99
    parserClass startSymbol:rootMethod methodName.
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   100
    self remember:parserClass as:#parser.
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   101
    ir := parserClass new
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   102
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   103
    "Modified: / 25-08-2015 / 00:05:49 / Jan Vrany"
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   104
    "Modified: / 26-08-2015 / 19:57:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   105
!
530
e36906742693 PPCConfiguration refactoring: [2/10]: introduced PPCCompilationContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 529
diff changeset
   106
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   107
generateScanner
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   108
    | scanner |
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   109
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   110
    context options generate ifFalse:[
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   111
        ^ self
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   112
    ].
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   113
    context scannerClass name:context options scannerName.
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   114
    context scannerClass superclass:context options scannerSuperclass.
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   115
    scanner := (self buildClass:context scannerClass).
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   116
    context parserClass addConstant:scanner as:#scannerClass.
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   117
    ir := scanner.
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   118
    self remember:scanner as:#scanner
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   119
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   120
    "Modified: / 25-08-2015 / 00:06:49 / Jan Vrany"
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   121
    "Modified: / 26-08-2015 / 19:58:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   122
! !
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   123
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   124
!PPCTokenizingConfiguration methodsFor:'phases'!
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
   125
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
   126
createFSAs
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
   127
    ir := PPCFSAVisitor new
530
e36906742693 PPCConfiguration refactoring: [2/10]: introduced PPCCompilationContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 529
diff changeset
   128
        idGen: context scannerClass idGen;
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
   129
        visit: ir.
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
   130
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
   131
    self remember: (self copyTree: ir) as: #withFSAs
530
e36906742693 PPCConfiguration refactoring: [2/10]: introduced PPCCompilationContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 529
diff changeset
   132
e36906742693 PPCConfiguration refactoring: [2/10]: introduced PPCCompilationContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 529
diff changeset
   133
    "Modified: / 25-08-2015 / 00:07:23 / 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
   134
!
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
   135
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
   136
createLL1Choices
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   137
    self flag:'This phase needs revisit and update'.
532
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   138
    self runPass: PPCLL1Visitor
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   139
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   140
    "Modified: / 26-08-2015 / 22:52:39 / 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: 464
diff changeset
   141
!
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: 464
diff changeset
   142
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:
diff changeset
   143
tokenize
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:
diff changeset
   144
    "
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   145
        This will try transform the parser into the tokenizing parser"
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:
diff changeset
   146
    
531
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   147
    context options tokenize ifFalse:[
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   148
        ^ self
dc3d13c2837d PPCConfiguration refactoring: [3/10]: Moved some sime instvars to context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 530
diff changeset
   149
    ].
532
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   150
    self runPass: PPCTokenizingVisitor
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   151
132d7898a2a1 PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 531
diff changeset
   152
    "Modified: / 26-08-2015 / 22:48:05 / 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
   153
!
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
   154
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
   155
unmarkConsumeTokensForInline
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
   156
    "TODO JK: Hack alert, use visitor, or at leas isTokenConsume"
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
   157
    ir allNodesDo: [ :node |
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
   158
        node class == PPCTokenConsumeNode ifTrue: [ 
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
   159
            node unmarkForInline
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
   160
        ]
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
   161
    ]
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:
diff changeset
   162
! !
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:
diff changeset
   163