compiler/TScanner.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 02 Sep 2015 09:18:00 +0100
changeset 6 0c806a7f1888
permissions -rw-r--r--
Initial support for inline assembly

"{ Package: 'jv:tea/compiler' }"

"{ NameSpace: Smalltalk }"

RBScanner subclass:#TScanner
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'Languages-Tea-Compiler-AST'
!


!TScanner methodsFor:'private-scanning'!

scanSpecialCharacter
        | character |

        currentCharacter == $: ifTrue: 
                        [self step.
                        currentCharacter == $=
                                ifTrue: 
                                        [self step.
                                        ^ RBAssignmentToken start: tokenStart]
                                ifFalse: [^ RBSpecialCharacterToken value: $: start: tokenStart]].

        currentCharacter == $% ifTrue:[ 
            RBParser isSmalltalkX ifTrue:[
                self step.
                currentCharacter == ${ ifTrue:[
                    self step.
                    ^ self scanSTXPrimitiveCode.
                ].
                currentCharacter == $[ ifTrue:[
                    self step.
                    ^ TInlineAssemblyBeginToken new
                        lineNumber: tokenLineNumber;
                        start: tokenStart;
                        yourself.
                ].
                currentCharacter == $] ifTrue:[
                    self step.
                    ^ TInlineAssemblyEndToken new
                        lineNumber: tokenLineNumber;
                        start: tokenStart;
                        yourself.
                ].
                characterType := #binary.
                ^ self scanBinary:RBBinarySelectorToken alreadyRead:$%.
            ].
            ^ self scanBinary: RBBinarySelectorToken
        ].

        character := currentCharacter.
        self step.
        ^RBSpecialCharacterToken value: character start: tokenStart lineNumber: tokenLineNumber

    "Created: / 02-09-2015 / 06:00:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!TScanner class methodsFor:'documentation'!

version_HG

    ^ '$Changeset: <not expanded> $'
! !