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 |
|