parsers/smalltalk/PPSmalltalkWhitespaceParser.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 23 Nov 2015 11:14:30 +0100
changeset 551 00ebb1b85f53
parent 421 7e08b31e0dae
permissions -rw-r--r--
Fixed CI scripts on Windows For an unknown reason, unzip on Windows reports status code 50 (presumably "the disk is (or was) full during extraction.") even if there's plenty of space. To workaround this, simply ignore status code 50 on Windows. Sigh.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
390
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/parsers/smalltalk' }"
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
PPParser subclass:#PPSmalltalkWhitespaceParser
421
7e08b31e0dae Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 417
diff changeset
     4
	instanceVariableNames:''
390
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
	classVariableNames:''
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	poolDictionaries:''
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	category:'PetitSmalltalk-Core'
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
!
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
417
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    11
390
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
!PPSmalltalkWhitespaceParser methodsFor:'analysis'!
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
isNullable
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
	^ true
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
! !
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
!PPSmalltalkWhitespaceParser methodsFor:'initialization'!
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
initialize
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
	super initialize.
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
! !
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
!PPSmalltalkWhitespaceParser methodsFor:'parsing'!
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
421
7e08b31e0dae Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 417
diff changeset
    26
name
7e08b31e0dae Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 417
diff changeset
    27
	^ 'smalltalk_ws'
7e08b31e0dae Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 417
diff changeset
    28
!
7e08b31e0dae Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 417
diff changeset
    29
390
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
parseOn: aPPContext
417
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    31
        "Skip any leading whitespace"
421
7e08b31e0dae Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 417
diff changeset
    32
        [ [aPPContext atEnd not and: [  aPPContext uncheckedPeek isSeparator ] ]
417
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    33
                whileTrue: [ aPPContext next ].
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    34
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    35
        "Check for comment"
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    36
         aPPContext atEnd not and: [ aPPContext uncheckedPeek = $" ] ] whileTrue: [
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    37
                aPPContext next.
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    38
                "Check for Smalltalk/X EOL comment"
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    39
                aPPContext uncheckedPeek == $/ ifTrue:[
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    40
                    | c |
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    41
                    aPPContext next.
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    42
                    [ aPPContext atEnd not 
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    43
                        and:[ (c := aPPContext uncheckedPeek) ~~ (Character codePoint: 15r0A) 
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    44
                        and: [ c ~~ (Character codePoint: 15r0D) ] ] ] whileTrue:[ 
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    45
                            aPPContext next.
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    46
                        ].
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    47
                    (c == (Character codePoint: 15r0D) and:[ aPPContext atEnd not and:[ aPPContext uncheckedPeek == (Character codePoint: 15r0A) ] ] ) ifTrue:[ 
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    48
                        aPPContext next
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    49
                    ].
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    50
                ] ifFalse:[ 
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    51
                    aPPContext upTo: $".
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    52
                ]
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    53
        ].
3c0a91182e65 Smalltalk grammar updated to allow for Smalltalk/X EOL comments
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 390
diff changeset
    54
421
7e08b31e0dae Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 417
diff changeset
    55
    "Modified: / 21-11-2014 / 10:10:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
390
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
! !
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
!PPSmalltalkWhitespaceParser class methodsFor:'documentation'!
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
version_HG
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    ^ '$Changeset: <not expanded> $'
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
! !
17ba167b8ee1 Updated to PetitSmalltalk-JanKurs.75
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64