SmallSense__TokenStream.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 14 Jun 2014 00:35:03 +0100
changeset 238 d5a32e41181f
parent 233 fb33bd6466a4
child 249 8bc64027b189
permissions -rw-r--r--
Fixes for token matcher: correctly (re)set position backwards. Support position (re)set even in cases there are not enough tokens in token cache. This is done by remembering both token position and source position in the underlaying character stream. If position is outside cached token range, clear token cache buffer and set source's stream character position.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'jv:smallsense' }"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: SmallSense }"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
Object subclass:#TokenStream
211
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
     6
	instanceVariableNames:'scanner scannerSourceReadLimit tokens last position full
228
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
     7
		positionMax positionOfCursor caretTokenReported'
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	classVariableNames:'BacklogSize'
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	poolDictionaries:''
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
	category:'SmallSense-Utils-Matcher'
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
Object subclass:#Token
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
	instanceVariableNames:'type value startPosition endPosition'
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
	classVariableNames:''
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
	poolDictionaries:''
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	privateIn:TokenStream
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
211
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    20
!TokenStream class methodsFor:'documentation'!
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    21
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    22
documentation
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    23
"
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    24
    A custom read-only stream that return high-level tokens produced
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    25
    by underlying scanner object. The scanner must conform to API of
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    26
    Scanner class.
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    27
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    28
    Additionaly, when a cursor position is provided, TokenStream returns
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    29
    a virtual token with type #CARET.
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    30
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    31
    [author:]
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    32
        Jan Vrany <jan.vrany@fit.cvut.cz>
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    33
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    34
    [instance variables:]
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    35
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    36
    [class variables:]
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    37
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    38
    [see also:]
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    39
        Scanner
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    40
        TokenPatternMatcher.
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    41
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    42
"
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    43
! !
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    44
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
!TokenStream class methodsFor:'initialization'!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
initialize
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    "Invoked at system start or when the class is dynamically loaded."
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    "/ please change as required (and remove this comment)
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    BacklogSize := 100.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    "Modified: / 07-08-2013 / 01:47:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
! !
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
!TokenStream class methodsFor:'instance creation'!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
on: scanner
211
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    60
    ^ self new initializeOn: scanner cursor: nil
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    "Created: / 06-05-2014 / 15:25:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
211
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    63
    "Modified: / 15-05-2014 / 15:08:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    64
!
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    65
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    66
on: scanner cursor: cursor
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    67
    ^ self new initializeOn: scanner cursor: cursor
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    68
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    69
    "Created: / 15-05-2014 / 15:08:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
! !
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
!TokenStream methodsFor:'accessing'!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
sourceStream
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    ^ scanner sourceStream
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
    "Created: / 07-08-2013 / 01:44:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
! !
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
!TokenStream methodsFor:'initialization'!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
initializeOn: scannerObject
211
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    83
    ^ self initializeOn: scannerObject cursor: nil
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    84
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    85
    "Created: / 06-05-2014 / 15:27:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    86
    "Modified: / 15-05-2014 / 15:08:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    87
!
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    88
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    89
initializeOn: scannerArg cursor: positionOfCursorArg
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    90
    scanner := scannerArg.
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    91
    positionOfCursor := positionOfCursorArg.
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
    tokens := Array new: BacklogSize.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
    last := 0.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
    full := false.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    position := 0.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    positionMax := 0.
228
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
    97
    caretTokenReported := false.
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
211
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
    99
    positionOfCursor notNil ifTrue:[ 
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   100
        scannerArg sourceStream isExternalStream ifTrue:[ 
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   101
            self error: 'Cursor reporting us supported only on internal streams'.
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   102
        ].
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   103
        scannerSourceReadLimit := scannerArg sourceStream readLimit.
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   104
        scannerArg sourceStream readLimit: (positionOfCursor min: scannerSourceReadLimit)
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   105
    ].
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   106
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   107
    "Created: / 15-05-2014 / 15:07:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
228
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   108
    "Modified: / 15-05-2014 / 17:55:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
! !
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
!TokenStream methodsFor:'stream api'!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
atEnd
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
    ^ self peek type == #EOF
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
    "Created: / 14-03-2012 / 22:53:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
    "Modified: / 07-08-2013 / 01:49:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
228
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   120
contents
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   121
    ^ Array streamContents:[ :s | 
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   122
        [ self atEnd ] whileFalse:[ 
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   123
            s nextPut: self next
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   124
        ].
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   125
    ].
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   126
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   127
    "Created: / 15-05-2014 / 07:49:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   128
!
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   129
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
next
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
    | i t |
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
    position < positionMax ifTrue:[
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
        i := last - (positionMax - position) + 1.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
        i <= 0 ifTrue:[
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
            i := tokens size + i.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
        ].
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
        position := position + 1.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
        ^ tokens at: i.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
    ].
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
    scanner nextToken.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
    t := scanner token.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
    "/ Smalltalk / JavaScript scanners does not return token objects, sigh...
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
    (t isCharacter or:[ t isString ]) ifTrue:[ 
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
        t := Token new
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
                type: scanner tokenType;
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
                value: scanner token;
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
                startPosition: scanner tokenStartPosition;
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
                endPosition: scanner tokenEndPosition;        
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
                yourself
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
    ].
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
    t isNil ifTrue:[ 
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
        t := Token new
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
                type: #EOF;
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
                yourself
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
    ].
211
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   156
    t type == #EOF ifTrue:[ 
228
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   157
        (caretTokenReported not and:[scanner sourceStream position == positionOfCursor]) ifTrue:[ 
211
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   158
            t type: #CARET.
228
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   159
            t value: $|.
211
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   160
            t startPosition: positionOfCursor.
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   161
            t endPosition: positionOfCursor.
228
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   162
            caretTokenReported := true.
211
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   163
            scanner sourceStream readLimit: scannerSourceReadLimit.
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   164
        ].
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   165
    ].
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
    position := positionMax := positionMax + 1.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
    last := last + 1.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
    last > tokens size ifTrue:[ 
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
        full ifFalse:[ full := true ].
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
        last := 1 
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
    ].
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
    tokens at: last put: t.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
    ^ t
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
    "Created: / 14-03-2012 / 22:53:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
228
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   176
    "Modified: / 15-05-2014 / 17:56:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
next: anInteger 
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
    "Answer up to anInteger elements of my collection. Overridden for efficiency."
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
    ^ self shouldNotImplement
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
    "Modified: / 06-05-2014 / 15:51:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
peek
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
    | t |
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
    t := self next.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
    position := position - 1.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
    ^ t
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
    "Modified: / 07-08-2013 / 01:12:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
position
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
    ^position
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
    "Created: / 14-03-2012 / 22:52:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
    "Modified: / 07-08-2013 / 01:06:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
position: anInteger
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
    (positionMax - anInteger) > (tokens size) ifTrue:[
238
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   206
        Stream positionErrorSignal raiseErrorString:'Not that much tokens in backlog!! Icrease it and try again'.
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   207
        ^ self.
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
    ].
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
    position := anInteger.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
238
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   211
    "Modified: / 13-06-2014 / 16:54:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   212
!
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   213
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   214
position: tokenPosition sourcePosition: sourcePosition
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   215
    position := positionMax := tokenPosition.
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   216
    tokens := tokens class new: tokens size.
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   217
    full := false.
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   218
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   219
    scanner sourceStream position: sourcePosition.
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   220
    positionOfCursor notNil ifTrue:[
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   221
        sourcePosition < positionOfCursor ifTrue:[
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   222
            scanner sourceStream readLimit: (positionOfCursor min: scannerSourceReadLimit).
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   223
            caretTokenReported := false.
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   224
        ].
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   225
    ].
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   226
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   227
    "Created: / 13-06-2014 / 17:06:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
209
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 200
diff changeset
   230
reset
238
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   231
    (positionMax) > (tokens size) ifFalse:[
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   232
        scanner sourceStream reset.    
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   233
    ].
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   234
    position := 0.
209
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 200
diff changeset
   235
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 200
diff changeset
   236
    "Created: / 14-05-2014 / 16:19:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
238
d5a32e41181f Fixes for token matcher: correctly (re)set position backwards.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   237
    "Modified: / 13-06-2014 / 16:47:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
209
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 200
diff changeset
   238
!
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 200
diff changeset
   239
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
skipSeparators
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
    self halt.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
    "Created: / 15-03-2012 / 10:35:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
    "Modified: / 07-08-2013 / 01:15:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
uncheckedPeek
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
    "An unchecked version of peek that throws an error if we try to peek over the end of the stream, even faster than #peek."
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
    ^ self peek
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
    "Modified: / 14-03-2012 / 22:46:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
! !
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
!TokenStream::Token methodsFor:'accessing'!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
endPosition
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
    ^ endPosition
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
endPosition:something
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
    endPosition := something.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
startPosition
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
    ^ startPosition
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
startPosition:something
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
    startPosition := something.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
stopPosition
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
    ^ endPosition
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
    "Created: / 04-04-2013 / 00:32:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
type
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
    ^ type
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
type:something
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
    type := something.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
value
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
    ^ value
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
value:something
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
    value := something.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
! !
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
!TokenStream::Token methodsFor:'printing & storing'!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
printOn:aStream
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
    "append a printed representation if the receiver to the argument, aStream"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
    aStream nextPut: ${.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
    type printOn:aStream.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
    aStream nextPutAll:' - '.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
    value printOn:aStream.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
    aStream nextPutAll:' <'.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
    startPosition printOn:aStream.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
    aStream nextPutAll:'-'.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
    endPosition printOn:aStream.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
    aStream nextPutAll:'>}'.
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
    "Modified: / 06-05-2014 / 15:33:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
! !
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
228
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   313
!TokenStream class methodsFor:'documentation'!
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   314
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   315
version_HG
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   316
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   317
    ^ '$Changeset: <not expanded> $'
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   318
! !
87ee1ba0e13f Fix in TokenStream - correctly report CARET, EOF when there are no more tokens after cursor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
   319
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
TokenStream initialize!