[squeak-dev] The Trunk: Compiler-nice.98.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri Nov 27 11:54:19 UTC 2009
Nicolas Cellier uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-nice.98.mcz
==================== Summary ====================
Name: Compiler-nice.98
Author: nice
Time: 27 November 2009, 12:54:16 pm
UUID: 4853aa4f-5bcb-e242-a130-f41f2c4d09ae
Ancestors: Compiler-cwp.97
Add support for literal ByteArray #[1 2 3]
=============== Diff against Compiler-cwp.97 ===============
Item was added:
+ ----- Method: Scanner>>scanLitByte (in category 'expression types') -----
+ scanLitByte
+ | stream |
+ stream := (ByteArray new: 16) writeStream.
+ [ tokenType = #rightBracket or: [ tokenType = #doIt ] ] whileFalse: [
+ tokenType = #word
+ ifTrue: [ self scanLitWord ].
+ (token isInteger and: [ token between: 0 and: 255 ])
+ ifFalse: [ ^ self offEnd: '8-bit integer or right bracket expected' ].
+ stream nextPut: token.
+ self scanToken ].
+ token := stream contents!
Item was changed:
+ ----- Method: Scanner class>>initialize (in category 'initialization') -----
- ----- Method: Scanner class>>initialize (in category 'class initialization') -----
initialize
| newTable |
+ newTable := Array new: 256 withAll: #xBinary. "default"
- newTable _ Array new: 256 withAll: #xBinary. "default"
newTable atAll: #(9 10 12 13 32 ) put: #xDelimiter. "tab lf ff cr space"
newTable atAll: ($0 asciiValue to: $9 asciiValue) put: #xDigit.
1 to: 255
do: [:index |
(Character value: index) isLetter
ifTrue: [newTable at: index put: #xLetter]].
newTable at: 30 put: #doIt.
newTable at: $" asciiValue put: #xDoubleQuote.
newTable at: $# asciiValue put: #xLitQuote.
newTable at: $$ asciiValue put: #xDollar.
newTable at: $' asciiValue put: #xSingleQuote.
newTable at: $: asciiValue put: #xColon.
newTable at: $( asciiValue put: #leftParenthesis.
newTable at: $) asciiValue put: #rightParenthesis.
newTable at: $. asciiValue put: #period.
newTable at: $; asciiValue put: #semicolon.
newTable at: $[ asciiValue put: #leftBracket.
newTable at: $] asciiValue put: #rightBracket.
newTable at: ${ asciiValue put: #leftBrace.
newTable at: $} asciiValue put: #rightBrace.
newTable at: $^ asciiValue put: #upArrow.
newTable at: $_ asciiValue put: #leftArrow.
newTable at: $| asciiValue put: #verticalBar.
+ TypeTable := newTable "bon voyage!!"
- TypeTable _ newTable "bon voyage!!"
"Scanner initialize"!
Item was changed:
----- Method: Scanner>>xLitQuote (in category 'multi-character scans') -----
xLitQuote
"Symbols and vectors: #(1 (4 5) 2 3) #ifTrue:ifFalse: #'abc'."
-
| start |
start := mark.
self step. "litQuote"
self scanToken.
tokenType = #leftParenthesis
+ ifTrue: [self scanToken; scanLitVec.
+ mark := start + 1.
- ifTrue:
- [self scanToken; scanLitVec.
- mark := start+1.
tokenType == #doIt
ifTrue: [self offEnd: 'Unmatched parenthesis']]
+ ifFalse: [tokenType = #leftBracket
+ ifTrue: [self scanToken; scanLitByte.
+ mark := start + 1.
+ tokenType == #doIt
+ ifTrue: [self offEnd: 'Unmatched bracket']]
+ ifFalse: [(#(#word #keyword #colon ) includes: tokenType)
+ ifTrue: [self scanLitWord]
+ ifFalse: [tokenType == #literal
+ ifTrue: [token isSymbol
+ ifTrue: ["##word"
+ token := token
+ "May want to move toward ANSI
+ here "]]
+ ifFalse: [tokenType == #string
+ ifTrue: [token := token asSymbol]]]]].
- ifFalse:
- [(#(word keyword colon ) includes: tokenType)
- ifTrue:
- [self scanLitWord]
- ifFalse:
- [(tokenType==#literal)
- ifTrue:
- [(token isSymbol)
- ifTrue: "##word"
- [token := token "May want to move toward ANSI here"]]
- ifFalse:
- [tokenType==#string ifTrue: [token := token asSymbol]]]].
mark := start.
tokenType := #literal
+ "#(Pen)
- " #(Pen)
#Pen
#'Pen'
##Pen
###Pen
+ "!
- "!
More information about the Squeak-dev
mailing list
|