tools/GroovyScanner.st
author Claus Gittinger <cg@exept.de>
Sun, 23 Feb 2020 14:10:52 +0100
branchcvs_MAIN
changeset 3999 d7c199709abd
parent 3980 c6875f04c2f4
permissions -rw-r--r--
#REFACTORING by exept class: JavaMethod changed: #decompileSourceTo:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3458
6a8487b950d2 class: GroovyScanner
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
     1
"{ Encoding: utf8 }"
6a8487b950d2 class: GroovyScanner
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
     2
3980
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
     3
"
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
     4
 COPYRIGHT (c) 2018 by eXept Software AG
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
     5
              All Rights Reserved
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
     6
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
     7
 This software is furnished under a license and may be used
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
     8
 only in accordance with the terms of that license and with the
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    10
 be provided or otherwise made available to, or used by, any
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    11
 other person.  No title to or ownership of the software is
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    12
 hereby transferred.
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    13
"
2873
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
"{ Package: 'stx:libjava/tools' }"
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
3458
6a8487b950d2 class: GroovyScanner
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
    16
"{ NameSpace: Smalltalk }"
6a8487b950d2 class: GroovyScanner
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
    17
2873
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
JavaScanner subclass:#GroovyScanner
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	instanceVariableNames:''
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	classVariableNames:''
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
	poolDictionaries:''
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
	category:'Languages-Groovy-Tools-Source'
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
!
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
3980
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    25
!GroovyScanner class methodsFor:'documentation'!
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    26
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    27
copyright
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    28
"
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    29
 COPYRIGHT (c) 2018 by eXept Software AG
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    30
              All Rights Reserved
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    31
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    32
 This software is furnished under a license and may be used
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    33
 only in accordance with the terms of that license and with the
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    35
 be provided or otherwise made available to, or used by, any
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    36
 other person.  No title to or ownership of the software is
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    37
 hereby transferred.
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    38
"
c6875f04c2f4 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 3458
diff changeset
    39
! !
2873
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
3105
7cc116da75e8 Added 'def' to keywords.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3101
diff changeset
    41
!GroovyScanner class methodsFor:'initialization'!
7cc116da75e8 Added 'def' to keywords.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3101
diff changeset
    42
7cc116da75e8 Added 'def' to keywords.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3101
diff changeset
    43
setupKeywordTable
7cc116da75e8 Added 'def' to keywords.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3101
diff changeset
    44
    "initialize the scanners actionTables - these are used to dispatch
7cc116da75e8 Added 'def' to keywords.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3101
diff changeset
    45
     into scanner methods as characters are read"
7cc116da75e8 Added 'def' to keywords.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3101
diff changeset
    46
7cc116da75e8 Added 'def' to keywords.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3101
diff changeset
    47
    super setupKeywordTable.
7cc116da75e8 Added 'def' to keywords.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3101
diff changeset
    48
    KeywordTable at: 'def' put: #def.
7cc116da75e8 Added 'def' to keywords.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3101
diff changeset
    49
7cc116da75e8 Added 'def' to keywords.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3101
diff changeset
    50
    "Created: / 14-05-2014 / 14:06:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7cc116da75e8 Added 'def' to keywords.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3101
diff changeset
    51
! !
7cc116da75e8 Added 'def' to keywords.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3101
diff changeset
    52
3101
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
    53
!GroovyScanner methodsFor:'error reporting'!
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
    54
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
    55
warnPossibleIncompatibility:aString position:smallInteger1 to:smallInteger2
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
    56
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
    57
    "Created: / 12-05-2014 / 16:23:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
    58
! !
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
    59
2873
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
!GroovyScanner methodsFor:'reading next token'!
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
nextString:delimiter character:ignored
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
    |s pos nextChar inString inTrippleQuoteString |
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
    s := (String new:20) writeStream.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    pos := source position.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    source next.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    nextChar := source next.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    inString := true.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    inTrippleQuoteString := false.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    (delimiter == $" and:[nextChar == $"]) ifTrue:[
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
        source peek == $" ifTrue:[
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
            inTrippleQuoteString := true.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
            nextChar := source next.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
            nextChar := source next.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
        ].
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    ].
3101
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
    80
    (delimiter == $' and:[nextChar == $']) ifTrue:[
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
    81
        source peek == $' ifTrue:[
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
    82
            inTrippleQuoteString := true.
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
    83
            nextChar := source next.
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
    84
            nextChar := source next.
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
    85
        ].
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
    86
    ]. 
2873
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    [inString] whileTrue:[
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
        nextChar isNil ifTrue:[
3240
4e707dec1e44 Fix in GroovyScanner: honour allowRunawayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3105
diff changeset
    90
            allowRunawayString ifTrue:[
4e707dec1e44 Fix in GroovyScanner: honour allowRunawayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3105
diff changeset
    91
                tokenValue := s contents.
4e707dec1e44 Fix in GroovyScanner: honour allowRunawayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3105
diff changeset
    92
                tokenType := #String.          
4e707dec1e44 Fix in GroovyScanner: honour allowRunawayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3105
diff changeset
    93
                ^ tokenType.
4e707dec1e44 Fix in GroovyScanner: honour allowRunawayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3105
diff changeset
    94
            ].
2873
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
            self syntaxError:'unexpected end-of-input in String'
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
                    position:pos + 1 to:(source position).
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
            tokenValue := nil.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
            tokenType := #EOF.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
            ^ tokenType
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
        ].
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
        nextChar == $\ ifTrue:[
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
            nextChar := source next.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
            nextChar := self characterEscape:nextChar.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
        ] ifFalse:[
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
            (nextChar == Character cr) ifTrue:[
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
                lineNr := lineNr + 1
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
            ] ifFalse:[
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
                (nextChar == delimiter) ifTrue:[
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
                    inTrippleQuoteString ifTrue:[
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
                        nextChar := source next.
3101
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   111
                        nextChar == delimiter ifTrue:[
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   112
                            "/ OK, two $"/$' found...
2873
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
                            nextChar := source next.
3101
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   114
                            nextChar == delimiter ifTrue:[
2873
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
                                inString := false.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
                            ] ifFalse:[
3101
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   117
                                s nextPut:delimiter.
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   118
                                s nextPut:delimiter.
2873
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
                            ].
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
                        ] ifFalse:[
3101
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   121
                            s nextPut:delimiter.
2873
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
                        ].
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
                    ] ifFalse:[
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
                        (source peekOrNil == delimiter) ifTrue:[
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
                            source next
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
                        ] ifFalse:[
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
                            inString := false
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
                        ]
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
                    ]
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
                ].
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
            ].
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
        ].
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
        inString ifTrue:[
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
            s nextPut:nextChar.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
            nextChar := source next
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
        ]
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
    ].
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
    tokenValue := s contents.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
    tokenType := #String.
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
    ^ tokenType
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
    "Created: / 18-10-2013 / 12:54:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3240
4e707dec1e44 Fix in GroovyScanner: honour allowRunawayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3105
diff changeset
   145
    "Modified: / 18-09-2014 / 11:40:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3101
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   146
!
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   147
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   148
nextToken
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   149
    "Refefined here to support hash-bang"
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   150
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   151
    source position < 1 ifTrue:[ 
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   152
        source peek == $# ifTrue:[ 
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   153
            source next.
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   154
            source peek == $!! ifTrue:[ 
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   155
                source nextLine.
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   156
            ].
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   157
        ].
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   158
    ].
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   159
    ^ super nextToken
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   160
446b34b9a386 Fixed GroovyScanner w.r.t ''' multiline comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2873
diff changeset
   161
    "Created: / 12-05-2014 / 16:21:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2873
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
! !
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
!GroovyScanner class methodsFor:'documentation'!
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
3458
6a8487b950d2 class: GroovyScanner
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
   166
version_CVS
6a8487b950d2 class: GroovyScanner
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
   167
6a8487b950d2 class: GroovyScanner
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
   168
    ^ '$Header$'
6a8487b950d2 class: GroovyScanner
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
   169
!
6a8487b950d2 class: GroovyScanner
Claus Gittinger <cg@exept.de>
parents: 3240
diff changeset
   170
2873
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
version_HG
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
    ^ '$Changeset: <not expanded> $'
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
! !
3084c43f20a1 Introduced GroovyScanner with support for Groovy-only tokens...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175