--- a/SyntaxHighlighter2.st Mon Jul 01 12:31:33 2013 +0100
+++ b/SyntaxHighlighter2.st Mon Jul 01 22:15:23 2013 +0100
@@ -1,6 +1,6 @@
"
COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
- All Rights Reserved
+ All Rights Reserved
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
@@ -38,7 +38,7 @@
copyright
"
COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
- All Rights Reserved
+ All Rights Reserved
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
@@ -96,23 +96,23 @@
text emphasisCollection:(text emphasis asRunArray).
tree == #Error ifTrue:[
- "/ mhmh - which is better ...
- "/ alternative1: color rest after error in red
-"/ text
-"/ emphasizeFrom:(parser sourceStream position)
-"/ to:text size
+ "/ mhmh - which is better ...
+ "/ alternative1: color rest after error in red
+"/ text
+"/ emphasizeFrom:(parser sourceStream position)
+"/ to:text size
"/ with:(#color->Color red).
- "/ alternative2: take original emphasis for rest
+ "/ alternative2: take original emphasis for rest
- endPos := parser sourceStream position1Based.
- endPos >= text size ifTrue:[
- ^ text
- ].
- ^ ((text copyTo:endPos) , (aString copyFrom:(endPos+1))).
+ endPos := parser sourceStream position1Based.
+ endPos >= text size ifTrue:[
+ ^ text
+ ].
+ ^ ((text copyTo:endPos) , (aString copyFrom:(endPos+1))).
- "/ alternative3: no emphasis for rest.
+ "/ alternative3: no emphasis for rest.
"/ ^ text "/ aString
].
@@ -120,8 +120,8 @@
"
self
- formatExpression:'(1 + 2) max:5'
- in:UndefinedObject
+ formatExpression:'(1 + 2) max:5'
+ in:UndefinedObject
"
"Created: / 25-07-2010 / 08:56:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -134,10 +134,10 @@
"/ obsolete interface
^ self
- formatMethod:nil
- source:aString
- in:aClass
- using:preferencesOrNil elementsInto:elements
+ formatMethod:nil
+ source:aString
+ in:aClass
+ using:preferencesOrNil elementsInto:elements
"Created: / 25-07-2010 / 08:56:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified (comment): / 05-07-2011 / 11:07:50 / cg"
@@ -152,59 +152,59 @@
aString isNil ifTrue:[^ nil].
Error handle:[:ex |
- ex creator isHandled ifTrue:[
- ex reject.
- ].
- (self parseErrorSignal handles:ex) ifFalse:[
- "Parse error may happen when re-formatting incomplete code while editing"
- ('SyntaxHighlighter [info]: error during highlight: ' , ex description) infoPrintCR.
- "/ ex suspendedContext fullPrintAll.
- ].
- ^ aString
+ ex creator isHandled ifTrue:[
+ ex reject.
+ ].
+ (self parseErrorSignal handles:ex) ifFalse:[
+ "Parse error may happen when re-formatting incomplete code while editing"
+ ('SyntaxHighlighter [info]: error during highlight: ' , ex description) infoPrintCR.
+ "/ ex suspendedContext fullPrintAll.
+ ].
+ ^ aString
] do:[
- highlighter := self for:(ReadStream on:aString string) in:aClass.
- highlighter elements: elements.
- preferencesOrNil notNil ifTrue:[highlighter preferences:preferencesOrNil].
- "/ highlighter ignoreErrors:true.
- highlighter ignoreWarnings:true.
- highlighter sourceText:(text := aString string asText).
- "/ use an array here - this can be changed much faster using #at:put:
- text emphasisCollection:(Array new:aString size).
+ highlighter := self for:(ReadStream on:aString string) in:aClass.
+ highlighter elements: elements.
+ preferencesOrNil notNil ifTrue:[highlighter preferences:preferencesOrNil].
+ "/ highlighter ignoreErrors:true.
+ highlighter ignoreWarnings:true.
+ highlighter sourceText:(text := aString string asText).
+ "/ use an array here - this can be changed much faster using #at:put:
+ text emphasisCollection:(Array new:aString size).
- tree := highlighter parseMethod.
- "/ now, convert the emphasis-array to a runArray
- text emphasisCollection:(text emphasis asRunArray).
+ tree := highlighter parseMethod.
+ "/ now, convert the emphasis-array to a runArray
+ text emphasisCollection:(text emphasis asRunArray).
- tree == #Error ifTrue:[
- eColor := UserPreferences current errorColor.
- eColor notNil ifTrue:[
- "/ mhmh - which is better ...
- "/ alternative1: color rest after error in red
- text
- emphasizeFrom:(highlighter sourceStream position1Based)
- to:text size
- with:(#color->eColor).
- ] ifFalse:[
- "/ alternative2: take original emphasis for rest
+ tree == #Error ifTrue:[
+ eColor := UserPreferences current errorColor.
+ eColor notNil ifTrue:[
+ "/ mhmh - which is better ...
+ "/ alternative1: color rest after error in red
+ text
+ emphasizeFrom:(highlighter sourceStream position1Based)
+ to:text size
+ with:(#color->eColor).
+ ] ifFalse:[
+ "/ alternative2: take original emphasis for rest
- endPos := highlighter sourceStream position1Based.
- endPos >= text size ifTrue:[
- ^ Array with: text with: highlighter elements
- ].
- ^ ((text copyTo:endPos) , (aString copyFrom:(endPos+1)))
- ].
- "/ alternative3: no emphasis for rest.
- ].
- ^text
+ endPos := highlighter sourceStream position1Based.
+ endPos >= text size ifTrue:[
+ ^ Array with: text with: highlighter elements
+ ].
+ ^ ((text copyTo:endPos) , (aString copyFrom:(endPos+1)))
+ ].
+ "/ alternative3: no emphasis for rest.
+ ].
+ ^text
]
"
self
- formatMethod:'foo
+ formatMethod:'foo
^ self bar:''hello''.
' , (Character doubleQuote asString) , 'some comment' , (Character doubleQuote asString) , '
'
- in:UndefinedObject
+ in:UndefinedObject
"
"Modified: / 22-08-2006 / 13:32:04 / cg"
@@ -259,66 +259,66 @@
"special kludge: since Scanner cannot know if -digit is a binary
expression or a negative constant, handle cases here"
- [(tokenType == #BinaryOperator)
+ [(tokenType == #BinaryOperator)
or:[(tokenType == $|)
or:[(tokenType == $^ and:[parserFlags allowCaretAsBinop])
- or:[((tokenType == #Integer) or:[tokenType == #Float])
- and:[tokenValue < 0]]]]
+ or:[((tokenType == #Integer) or:[tokenType == #Float])
+ and:[tokenValue < 0]]]]
] whileTrue:[
- "/ kludge alarm: in a function-call argList, #, is not a binarySelector
- inFunctionCallArgument == true ifTrue:[
- ((tokenType == #BinaryOperator) and:[tokenName = ',']) ifTrue:[
- ^ receiver
- ].
- ].
+ "/ kludge alarm: in a function-call argList, #, is not a binarySelector
+ inFunctionCallArgument == true ifTrue:[
+ ((tokenType == #BinaryOperator) and:[tokenName = ',']) ifTrue:[
+ ^ receiver
+ ].
+ ].
- pos1 := tokenPosition.
- lno := tokenLineNr.
+ pos1 := tokenPosition.
+ lno := tokenLineNr.
- "/ kludge alarm: bar, caret and minus are not scanned as binop
- (tokenType == $|) ifTrue:[
- sel := '|'.
- sel := self selectorCheck:sel for:receiver position:tokenPosition to:tokenPosition.
- self nextToken.
- ] ifFalse:[
- (tokenType == $^) ifTrue:[
- sel := '^'.
- sel := self selectorCheck:sel for:receiver position:tokenPosition to:tokenPosition.
- self nextToken.
- ] ifFalse:[
- (tokenType == #BinaryOperator) ifTrue:[
- sel := tokenName.
- sel := self selectorCheck:sel for:receiver position:tokenPosition to:(tokenPosition + tokenName size - 1).
- self nextToken
- ] ifFalse:[
- sel := '-'.
- token := tokenValue := tokenValue negated.
- tokenPosition := tokenPosition + 1. "/ to skip the sign
- ]
- ].
- ].
+ "/ kludge alarm: bar, caret and minus are not scanned as binop
+ (tokenType == $|) ifTrue:[
+ sel := '|'.
+ sel := self selectorCheck:sel for:receiver position:tokenPosition to:tokenPosition.
+ self nextToken.
+ ] ifFalse:[
+ (tokenType == $^) ifTrue:[
+ sel := '^'.
+ sel := self selectorCheck:sel for:receiver position:tokenPosition to:tokenPosition.
+ self nextToken.
+ ] ifFalse:[
+ (tokenType == #BinaryOperator) ifTrue:[
+ sel := tokenName.
+ sel := self selectorCheck:sel for:receiver position:tokenPosition to:(tokenPosition + tokenName size - 1).
+ self nextToken
+ ] ifFalse:[
+ sel := '-'.
+ token := tokenValue := tokenValue negated.
+ tokenPosition := tokenPosition + 1. "/ to skip the sign
+ ]
+ ].
+ ].
- pos2 := pos1 + sel size - 1.
- self markSelector:sel from:pos1 to:pos2 receiverNode:receiver.
- lastSelectorElement := nil.
+ pos2 := pos1 + sel size - 1.
+ self markSelector:sel from:pos1 to:pos2 receiverNode:receiver.
+ lastSelectorElement := nil.
- arg := self unaryExpression.
- (arg == #Error) ifTrue:[^ #Error].
+ arg := self unaryExpression.
+ (arg == #Error) ifTrue:[^ #Error].
- expr := BinaryNode receiver:receiver selector:sel arg:arg fold:foldConstants.
- expr isErrorNode ifTrue:[
- self parseError:(expr errorString) position:pos1 to:tokenPosition.
- errorFlag := false. "ok, user wants it - so he'll get it"
- expr := BinaryNode receiver:receiver selector:sel arg:arg fold:nil.
- ].
- expr lineNumber:lno.
- expr selectorPosition:pos1.
+ expr := BinaryNode receiver:receiver selector:sel arg:arg fold:foldConstants.
+ expr isErrorNode ifTrue:[
+ self parseError:(expr errorString) position:pos1 to:tokenPosition.
+ errorFlag := false. "ok, user wants it - so he'll get it"
+ expr := BinaryNode receiver:receiver selector:sel arg:arg fold:nil.
+ ].
+ expr lineNumber:lno.
+ expr selectorPosition:pos1.
- self checkPlausibilityOf:expr from:pos1 to:pos2.
- parseForCode ifFalse:[
- self rememberSelectorUsed:sel receiver:receiver
- ].
- receiver := expr. "/ for next message
+ self checkPlausibilityOf:expr from:pos1 to:pos2.
+ parseForCode ifFalse:[
+ self rememberSelectorUsed:sel receiver:receiver
+ ].
+ receiver := expr. "/ for next message
].
^ receiver
@@ -332,7 +332,7 @@
"parse a keyword-expression; return a node-tree, nil or #Error.
keywordExpression ::= binaryexpression
- | { KEYWORD-PART binaryExpression }
+ | { KEYWORD-PART binaryExpression }
"
|expr receiver sel arg args posR1 posR2 pos1 pos2 lno positions constVal|
@@ -351,40 +351,40 @@
(arg == #Error) ifTrue:[^ #Error].
args := Array with:arg.
[tokenType == #Keyword] whileTrue:[
- sel := sel , tokenName.
- pos2 := tokenPosition + tokenName size - 1.
- positions add:(tokenPosition to:pos2).
- self nextToken.
- arg := self binaryExpression.
- (arg == #Error) ifTrue:[^ #Error].
- args := args copyWith:arg.
+ sel := sel , tokenName.
+ pos2 := tokenPosition + tokenName size - 1.
+ positions add:(tokenPosition to:pos2).
+ self nextToken.
+ arg := self binaryExpression.
+ (arg == #Error) ifTrue:[^ #Error].
+ args := args copyWith:arg.
].
positions do:[:p |
- self markSelector:sel from:p start to:p stop receiverNode:receiver.
+ self markSelector:sel from:p start to:p stop receiverNode:receiver.
].
lastSelectorElement := nil.
sel := self selectorCheck:sel for:receiver positions:positions.
ignoreWarnings ifFalse:[
- (Class definitionSelectors includes:sel) ifTrue:[
- (receiver isVariable and:[receiver isUndeclared]) ifTrue:[
- "this is not an error - the undefined class may be loaded after this code!!"
- self warning:('as yet undefined superclass: ' , receiver name) position:pos1 to:pos2.
- ].
- ].
+ (Class definitionSelectors includes:sel) ifTrue:[
+ (receiver isVariable and:[receiver isUndeclared]) ifTrue:[
+ "this is not an error - the undefined class may be loaded after this code!!"
+ self warning:('as yet undefined superclass: ' , receiver name) position:pos1 to:pos2.
+ ].
+ ].
].
expr := MessageNode receiver:receiver selector:sel args:args fold:foldConstants.
expr isErrorNode ifTrue:[
- self parseError:(expr errorString) position:pos1 to:pos2.
- errorFlag := false. "ok, user wants it - so he'll get it"
- expr := MessageNode receiver:receiver selector:sel args:args fold:nil.
+ self parseError:(expr errorString) position:pos1 to:pos2.
+ errorFlag := false. "ok, user wants it - so he'll get it"
+ expr := MessageNode receiver:receiver selector:sel args:args fold:nil.
].
expr lineNumber:lno.
self checkPlausibilityOf:expr from:pos1 to:pos2.
parseForCode ifFalse:[
- self rememberSelectorUsed:sel receiver:receiver
+ self rememberSelectorUsed:sel receiver:receiver
].
"/ (contextToEvaluateIn isNil and:[selfValue isNil]) ifTrue:[ "/ do not check this for doits
@@ -398,72 +398,72 @@
"/
(sel = #ifTrue: or:[sel = #ifFalse: or:[sel = #ifTrue:ifFalse: or:[sel = #ifFalse:ifTrue:]]]) ifTrue:[
- (expr receiver withConstantValueDo:[:val | constVal := val]) ifTrue:[
- |indexOfArgNotExecuted|
+ (expr receiver withConstantValueDo:[:val | constVal := val]) ifTrue:[
+ |indexOfArgNotExecuted|
- "/ receiver evaluates to a constant
- constVal == true ifTrue:[
- (sel startsWith: #ifFalse:) ifTrue:[
- indexOfArgNotExecuted := 1.
- ] ifFalse:[
- indexOfArgNotExecuted := 2.
- ]
- ].
- constVal == false ifTrue:[
- (sel startsWith: #ifTrue:) ifTrue:[
- indexOfArgNotExecuted := 1.
- ] ifFalse:[
- indexOfArgNotExecuted := 2.
- ]
- ].
- indexOfArgNotExecuted == 2 ifTrue:[
- args size == 1 ifTrue:[ indexOfArgNotExecuted := nil]
- ].
+ "/ receiver evaluates to a constant
+ constVal == true ifTrue:[
+ (sel startsWith: #ifFalse:) ifTrue:[
+ indexOfArgNotExecuted := 1.
+ ] ifFalse:[
+ indexOfArgNotExecuted := 2.
+ ]
+ ].
+ constVal == false ifTrue:[
+ (sel startsWith: #ifTrue:) ifTrue:[
+ indexOfArgNotExecuted := 1.
+ ] ifFalse:[
+ indexOfArgNotExecuted := 2.
+ ]
+ ].
+ indexOfArgNotExecuted == 2 ifTrue:[
+ args size == 1 ifTrue:[ indexOfArgNotExecuted := nil]
+ ].
- indexOfArgNotExecuted notNil ifTrue:[
- |argIsNotExecuted|
+ indexOfArgNotExecuted notNil ifTrue:[
+ |argIsNotExecuted|
- "/ self warning:'receiver is constant; arg',indexOfArgNotExecuted printString,' is never executed' position:pos1 to:tokenPosition.
- argIsNotExecuted := expr args at:indexOfArgNotExecuted.
- argIsNotExecuted isBlockNode ifTrue:[
- self markCommentFrom:argIsNotExecuted startPosition to:argIsNotExecuted endPosition.
- ].
- ].
- ].
+ "/ self warning:'receiver is constant; arg',indexOfArgNotExecuted printString,' is never executed' position:pos1 to:tokenPosition.
+ argIsNotExecuted := expr args at:indexOfArgNotExecuted.
+ argIsNotExecuted isBlockNode ifTrue:[
+ self markCommentFrom:argIsNotExecuted startPosition to:argIsNotExecuted endPosition.
+ ].
+ ].
+ ].
].
(ignoreErrors or:[ignoreWarnings]) ifFalse:[
- (sel = #and: or:[sel = #or:]) ifTrue:[
- expr arg1 isBlock ifFalse:[
- (expr arg1 isVariable
- and:[ (expr arg1 name asLowercase includesString:'block')]) ifFalse:[
- self warnCommonMistake:'(possible common mistake) missing block brackets ?'
- position:pos2+1 to:tokenPosition-1
- ]
- ].
- ^ expr.
- ].
+ (sel = #and: or:[sel = #or:]) ifTrue:[
+ expr arg1 isBlock ifFalse:[
+ (expr arg1 isVariable
+ and:[ (expr arg1 name asLowercase includesString:'block')]) ifFalse:[
+ self warnCommonMistake:'(possible common mistake) missing block brackets ?'
+ position:pos2+1 to:tokenPosition-1
+ ]
+ ].
+ ^ expr.
+ ].
- (sel = #whileTrue: or:[sel = #whileFalse:]) ifTrue:[
- expr receiver isBlock ifFalse:[
- (expr receiver isVariable
- and:[ (expr receiver name asLowercase includesString:'block')]) ifFalse:[
- self warnCommonMistake:'(possible common mistake) missing block brackets ?'
- position:pos1 to:pos2
- ]
- ].
- ^ expr.
- ].
+ (sel = #whileTrue: or:[sel = #whileFalse:]) ifTrue:[
+ expr receiver isBlock ifFalse:[
+ (expr receiver isVariable
+ and:[ (expr receiver name asLowercase includesString:'block')]) ifFalse:[
+ self warnCommonMistake:'(possible common mistake) missing block brackets ?'
+ position:pos1 to:pos2
+ ]
+ ].
+ ^ expr.
+ ].
- (sel = #ifTrue: or:[sel = #ifFalse:]) ifTrue:[
- expr receiver isMessage ifTrue:[
- (expr receiver selector = #whileTrue or:[expr receiver selector = #whileFalse]) ifTrue:[
- self warnCommonMistake:'strange receiver expression'
- position:pos1 to:pos2
- ].
- ].
- ^ expr
- ].
+ (sel = #ifTrue: or:[sel = #ifFalse:]) ifTrue:[
+ expr receiver isMessage ifTrue:[
+ (expr receiver selector = #whileTrue or:[expr receiver selector = #whileFalse]) ifTrue:[
+ self warnCommonMistake:'strange receiver expression'
+ position:pos1 to:pos2
+ ].
+ ].
+ ^ expr
+ ].
].
^ expr.
@@ -482,55 +482,55 @@
(receiver == #Error) ifTrue:[^ #Error].
[ self isValidUnarySelector:tokenType ] whileTrue:[
- pos := tokenPosition.
- pos2 := pos + tokenName size - 1.
- lNr := tokenLineNr.
- sel := tokenName.
+ pos := tokenPosition.
+ pos2 := pos + tokenName size - 1.
+ lNr := tokenLineNr.
+ sel := tokenName.
- self markSelector:sel from:pos to:pos2 receiverNode:receiver.
- lastSelectorElement := nil.
+ self markSelector:sel from:pos to:pos2 receiverNode:receiver.
+ lastSelectorElement := nil.
- self nextToken.
- tokenType == $( ifTrue:[
- parserFlags allowSqueakExtensions == true ifTrue:[
- "/ croquet/squeak extension - c/java-style arguments
- arguments := self functionCallArgList.
- "/ synthetic selector: foo[:[with:[with:[...]]]]
- arguments notEmpty ifTrue:[
- sel := sel , ':'.
- arguments size - 1 timesRepeat:[ sel := sel , 'with:' ].
- ].
- sel := self selectorCheck:sel for:receiver position:pos to:pos2.
- expr := MessageNode receiver:receiver selector:sel args:arguments fold:foldConstants.
- expr isErrorNode ifTrue:[
- self parseError:(expr errorString) position:pos to:pos2.
- errorFlag := false. "ok, user wants it - so he'll get it"
- expr := MessageNode receiver:receiver selector:sel args:arguments fold:nil.
- ].
- expr lineNumber:lNr.
- self checkPlausibilityOf:expr from:pos to:pos2.
- parseForCode ifFalse:[
- self rememberSelectorUsed:sel receiver:receiver
- ].
- ^ expr.
- ].
- ].
+ self nextToken.
+ tokenType == $( ifTrue:[
+ parserFlags allowSqueakExtensions == true ifTrue:[
+ "/ croquet/squeak extension - c/java-style arguments
+ arguments := self functionCallArgList.
+ "/ synthetic selector: foo[:[with:[with:[...]]]]
+ arguments notEmpty ifTrue:[
+ sel := sel , ':'.
+ arguments size - 1 timesRepeat:[ sel := sel , 'with:' ].
+ ].
+ sel := self selectorCheck:sel for:receiver position:pos to:pos2.
+ expr := MessageNode receiver:receiver selector:sel args:arguments fold:foldConstants.
+ expr isErrorNode ifTrue:[
+ self parseError:(expr errorString) position:pos to:pos2.
+ errorFlag := false. "ok, user wants it - so he'll get it"
+ expr := MessageNode receiver:receiver selector:sel args:arguments fold:nil.
+ ].
+ expr lineNumber:lNr.
+ self checkPlausibilityOf:expr from:pos to:pos2.
+ parseForCode ifFalse:[
+ self rememberSelectorUsed:sel receiver:receiver
+ ].
+ ^ expr.
+ ].
+ ].
- sel := self selectorCheck:sel for:receiver position:pos to:pos2.
- expr := UnaryNode receiver:receiver selector:sel fold:foldConstants.
- expr isErrorNode ifTrue:[
- self warning:(expr errorString , '.\\If you proceed, that error will happen at runtime.') withCRs position:pos to:pos2.
- errorFlag := false. "ok, user wants it - so he'll get it"
- expr := UnaryNode receiver:receiver selector:sel fold:nil.
- ].
- expr lineNumber:lNr.
+ sel := self selectorCheck:sel for:receiver position:pos to:pos2.
+ expr := UnaryNode receiver:receiver selector:sel fold:foldConstants.
+ expr isErrorNode ifTrue:[
+ self warning:(expr errorString , '.\\If you proceed, that error will happen at runtime.') withCRs position:pos to:pos2.
+ errorFlag := false. "ok, user wants it - so he'll get it"
+ expr := UnaryNode receiver:receiver selector:sel fold:nil.
+ ].
+ expr lineNumber:lNr.
- self checkPlausibilityOf:expr from:pos to:pos2.
- parseForCode ifFalse:[
- self rememberSelectorUsed:sel receiver:receiver
- ].
+ self checkPlausibilityOf:expr from:pos to:pos2.
+ parseForCode ifFalse:[
+ self rememberSelectorUsed:sel receiver:receiver
+ ].
- receiver := expr. "/ for next message
+ receiver := expr. "/ for next message
].
^ receiver
@@ -546,7 +546,7 @@
lastSelectorElement := nil.
node := super binaryExpression.
(lastSelectorElement notNil and:[node ~~ #Error and:[node isMessage]]) ifTrue:[
- lastSelectorElement node parent: node.
+ lastSelectorElement node parent: node.
].
lastSelectorElement := savedLastSelectorElement.
^node
@@ -562,10 +562,10 @@
lastSelectorElement := nil.
node := super expression.
((node ~~ #Error) and:[node isMessage]) ifTrue:[
- [ lastSelectorElement notNil ] whileTrue:[
- lastSelectorElement node parent: node.
- lastSelectorElement := lastSelectorElement prev.
- ].
+ [ lastSelectorElement notNil ] whileTrue:[
+ lastSelectorElement node parent: node.
+ lastSelectorElement := lastSelectorElement prev.
+ ].
].
lastSelectorElement := savedLastSelectorElement.
^node
@@ -584,57 +584,57 @@
(receiver == #Error) ifTrue:[^ #Error].
[ self isValidUnarySelector:tokenType ] whileTrue:[
- pos := tokenPosition.
- pos2 := pos + tokenName size - 1.
- lNr := tokenLineNr.
- sel := tokenName.
+ pos := tokenPosition.
+ pos2 := pos + tokenName size - 1.
+ lNr := tokenLineNr.
+ sel := tokenName.
- lastSelectorElement := nil.
- self markSelector:sel from:pos to:pos2 receiverNode:receiver.
+ lastSelectorElement := nil.
+ self markSelector:sel from:pos to:pos2 receiverNode:receiver.
- self nextToken.
- tokenType == $( ifTrue:[
- parserFlags allowSqueakExtensions == true ifTrue:[
- "/ croquet/squeak extension - c/java-style arguments
- arguments := self functionCallArgList.
- "/ synthetic selector: foo[:[with:[with:[...]]]]
- arguments notEmpty ifTrue:[
- sel := sel , ':'.
- arguments size - 1 timesRepeat:[ sel := sel , 'with:' ].
- ].
- sel := self selectorCheck:sel for:receiver position:pos to:pos2.
- expr := MessageNode receiver:receiver selector:sel args:arguments fold:foldConstants.
- expr isErrorNode ifTrue:[
- self parseError:(expr errorString) position:pos to:pos2.
- errorFlag := false. "ok, user wants it - so he'll get it"
- expr := MessageNode receiver:receiver selector:sel args:arguments fold:nil.
- ].
- lastSelectorElement node parent: expr.
- expr lineNumber:lNr.
- self checkPlausibilityOf:expr from:pos to:pos2.
- parseForCode ifFalse:[
- self rememberSelectorUsed:sel receiver:receiver
- ].
- ^ expr.
- ].
- ].
+ self nextToken.
+ tokenType == $( ifTrue:[
+ parserFlags allowSqueakExtensions == true ifTrue:[
+ "/ croquet/squeak extension - c/java-style arguments
+ arguments := self functionCallArgList.
+ "/ synthetic selector: foo[:[with:[with:[...]]]]
+ arguments notEmpty ifTrue:[
+ sel := sel , ':'.
+ arguments size - 1 timesRepeat:[ sel := sel , 'with:' ].
+ ].
+ sel := self selectorCheck:sel for:receiver position:pos to:pos2.
+ expr := MessageNode receiver:receiver selector:sel args:arguments fold:foldConstants.
+ expr isErrorNode ifTrue:[
+ self parseError:(expr errorString) position:pos to:pos2.
+ errorFlag := false. "ok, user wants it - so he'll get it"
+ expr := MessageNode receiver:receiver selector:sel args:arguments fold:nil.
+ ].
+ lastSelectorElement node parent: expr.
+ expr lineNumber:lNr.
+ self checkPlausibilityOf:expr from:pos to:pos2.
+ parseForCode ifFalse:[
+ self rememberSelectorUsed:sel receiver:receiver
+ ].
+ ^ expr.
+ ].
+ ].
- sel := self selectorCheck:sel for:receiver position:pos to:pos2.
- expr := UnaryNode receiver:receiver selector:sel fold:foldConstants.
- expr isErrorNode ifTrue:[
- self warning:(expr errorString , '.\\If you proceed, that error will happen at runtime.') withCRs position:pos to:pos2.
- errorFlag := false. "ok, user wants it - so he'll get it"
- expr := UnaryNode receiver:receiver selector:sel fold:nil.
- ].
- expr lineNumber:lNr.
- lastSelectorElement node parent: expr.
+ sel := self selectorCheck:sel for:receiver position:pos to:pos2.
+ expr := UnaryNode receiver:receiver selector:sel fold:foldConstants.
+ expr isErrorNode ifTrue:[
+ self warning:(expr errorString , '.\\If you proceed, that error will happen at runtime.') withCRs position:pos to:pos2.
+ errorFlag := false. "ok, user wants it - so he'll get it"
+ expr := UnaryNode receiver:receiver selector:sel fold:nil.
+ ].
+ expr lineNumber:lNr.
+ lastSelectorElement node parent: expr.
- self checkPlausibilityOf:expr from:pos to:pos2.
- parseForCode ifFalse:[
- self rememberSelectorUsed:sel receiver:receiver
- ].
+ self checkPlausibilityOf:expr from:pos to:pos2.
+ parseForCode ifFalse:[
+ self rememberSelectorUsed:sel receiver:receiver
+ ].
- receiver := expr. "/ for next message
+ receiver := expr. "/ for next message
].
lastSelectorElement := savedLastSelectorElement.
^ receiver
@@ -650,13 +650,13 @@
node := super variable.
ignoreBadIdentifier := false.
node isVariable ifTrue:[
- | el prevEl |
+ | el prevEl |
- el := elements newElementFor: node.
- prevEl := lastVariableElements at:node name ifAbsent:[nil].
- prevEl notNil ifTrue:[prevEl next:el].
- lastVariableElements at:node name put:el.
- elements add: el.
+ el := elements newElementFor: node.
+ prevEl := lastVariableElements at:node name ifAbsent:[nil].
+ prevEl notNil ifTrue:[prevEl next:el].
+ lastVariableElements at:node name put:el.
+ elements add: el.
].
^node
@@ -714,26 +714,26 @@
marked specially (and not as an error when the class is not yet loaded -
the code is correct as JavaClassAccessor loads it lazily"
(aReceiverNode isJavaPackageReference) ifTrue:[
- self
- markFrom:pos1 to:pos2
- withEmphasis:preferences globalClassIdentifierEmphasis
- color: preferences globalClassIdentifierColor
+ self
+ markFrom:pos1 to:pos2
+ withEmphasis:preferences globalClassIdentifierEmphasis
+ color: preferences globalClassIdentifierColor
] ifFalse:[
- super markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode.
+ super markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode.
].
-
+
"don't create symbols for partial typed selectors"
selectorSymbol := selectorString asSymbolIfInterned.
element := elements newElementFor: (SelectorNode value: selectorString from: pos1 to: pos2).
(lastSelectorElement notNil "and:[lastSelectorElement value = selectorString]") ifTrue:[
- lastSelectorElement next: element.
+ lastSelectorElement next: element.
].
elements add: element.
lastSelectorElement := "(self isValidUnarySelector:tokenType)"false
- ifTrue:[nil]
- ifFalse:[element].
+ ifTrue:[nil]
+ ifFalse:[element].
"Created: / 14-02-2010 / 17:40:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 14-02-2010 / 19:24:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -765,4 +765,3 @@
version_SVN
^ '$Id: SyntaxHighlighter2.st,v 1.15 2013-06-23 10:44:44 cg Exp $'
! !
-