compiler/TScanner.st
changeset 14 fa42d3f1a578
parent 13 97090c2baa33
child 15 10a95d798b36
equal deleted inserted replaced
13:97090c2baa33 14:fa42d3f1a578
     1 "{ Package: 'jv:tea/compiler' }"
       
     2 
       
     3 "{ NameSpace: Smalltalk }"
       
     4 
       
     5 RBScanner subclass:#TScanner
       
     6 	instanceVariableNames:''
       
     7 	classVariableNames:''
       
     8 	poolDictionaries:''
       
     9 	category:'Languages-Tea-Compiler-AST'
       
    10 !
       
    11 
       
    12 
       
    13 !TScanner methodsFor:'private-scanning'!
       
    14 
       
    15 scanSpecialCharacter
       
    16         | character |
       
    17 
       
    18         currentCharacter == $: ifTrue: 
       
    19                         [self step.
       
    20                         currentCharacter == $=
       
    21                                 ifTrue: 
       
    22                                         [self step.
       
    23                                         ^ RBAssignmentToken start: tokenStart]
       
    24                                 ifFalse: [^ RBSpecialCharacterToken value: $: start: tokenStart]].
       
    25 
       
    26         currentCharacter == $% ifTrue:[ 
       
    27             RBParser isSmalltalkX ifTrue:[
       
    28                 self step.
       
    29                 currentCharacter == ${ ifTrue:[
       
    30                     self step.
       
    31                     ^ self scanSTXPrimitiveCode.
       
    32                 ].
       
    33                 currentCharacter == $[ ifTrue:[
       
    34                     self step.
       
    35                     ^ TInlineAssemblyBeginToken new
       
    36                         lineNumber: tokenLineNumber;
       
    37                         start: tokenStart;
       
    38                         yourself.
       
    39                 ].
       
    40                 currentCharacter == $] ifTrue:[
       
    41                     self step.
       
    42                     ^ TInlineAssemblyEndToken new
       
    43                         lineNumber: tokenLineNumber;
       
    44                         start: tokenStart;
       
    45                         yourself.
       
    46                 ].
       
    47                 characterType := #binary.
       
    48                 ^ self scanBinary:RBBinarySelectorToken alreadyRead:$%.
       
    49             ].
       
    50             ^ self scanBinary: RBBinarySelectorToken
       
    51         ].
       
    52 
       
    53         character := currentCharacter.
       
    54         self step.
       
    55         ^RBSpecialCharacterToken value: character start: tokenStart lineNumber: tokenLineNumber
       
    56 
       
    57     "Created: / 02-09-2015 / 06:00:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
    58 ! !
       
    59 
       
    60 !TScanner class methodsFor:'documentation'!
       
    61 
       
    62 version_HG
       
    63 
       
    64     ^ '$Changeset: <not expanded> $'
       
    65 ! !
       
    66