SyntaxHighlighter2.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 01 Jul 2013 22:15:23 +0100
branchjv
changeset 13178 c9bf900fe729
parent 13176 54255ec9b267
parent 12987 306d6dc6ffbb
child 13333 2e8aa3023772
permissions -rw-r--r--
Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
10067
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
     2
 COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
     3
	      All Rights Reserved
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
10067
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
     5
Permission is hereby granted, free of charge, to any person
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
     6
obtaining a copy of this software and associated documentation
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
     7
files (the 'Software'), to deal in the Software without
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
     8
restriction, including without limitation the rights to use,
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
     9
copy, modify, merge, publish, distribute, sublicense, and/or sell
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    10
copies of the Software, and to permit persons to whom the
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    11
Software is furnished to do so, subject to the following
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    12
conditions:
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    13
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    14
The above copyright notice and this permission notice shall be
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    15
included in all copies or substantial portions of the Software.
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    16
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    17
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    18
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    19
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    20
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    21
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    22
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    23
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    24
OTHER DEALINGS IN THE SOFTWARE.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
"
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
"{ Package: 'stx:libtool' }"
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
SyntaxHighlighter subclass:#SyntaxHighlighter2
12194
4639848e5517 Improvements in syntax highlighting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12170
diff changeset
    29
	instanceVariableNames:'elements lastVariableElements lastSelectorElement
4639848e5517 Improvements in syntax highlighting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12170
diff changeset
    30
		ignoreBadIdentifier'
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
	classVariableNames:''
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	poolDictionaries:''
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	category:'Interface-CodeView-Syntax'
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
!SyntaxHighlighter2 class methodsFor:'documentation'!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
copyright
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
"
10067
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    40
 COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
    41
	      All Rights Reserved
10067
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    42
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    43
Permission is hereby granted, free of charge, to any person
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    44
obtaining a copy of this software and associated documentation
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    45
files (the 'Software'), to deal in the Software without
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    46
restriction, including without limitation the rights to use,
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    47
copy, modify, merge, publish, distribute, sublicense, and/or sell
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    48
copies of the Software, and to permit persons to whom the
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    49
Software is furnished to do so, subject to the following
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    50
conditions:
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
10067
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    52
The above copyright notice and this permission notice shall be
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    53
included in all copies or substantial portions of the Software.
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    54
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    55
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    56
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    57
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    58
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    59
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    60
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    61
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
c7b27b7cc827 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10022
diff changeset
    62
OTHER DEALINGS IN THE SOFTWARE.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
"
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
! !
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
!SyntaxHighlighter2 class methodsFor:'highlighting'!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
formatClassDefinition:aString in:aClass elementsInto: elements
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    "format (recolor) a class definition expression in a given class.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
     Return the text containing font changes and color information."
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    ^ self formatExpression:aString in:aClass elementsInto: elements
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    "Created: / 10-04-2011 / 18:18:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
formatExpression:aString in:aClass elementsInto: elements
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    "format (recolor) an expression in a given class.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
     Return the text containing font changes and color information."
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    |parser tree text endPos|
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    aString isNil ifTrue:[^ nil].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
    parser := self for:(ReadStream on:aString string) in:aClass.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    parser elements: elements.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    parser ignoreErrors:true.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    parser ignoreWarnings:true.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    parser sourceText:(text := aString string asText).
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    "/ use an array here - this can be changed much faster using #at:put:
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
    text emphasisCollection:(Array new:aString size).
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    parser nextToken.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    tree := parser "expression"statementList.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    "/ now, convert the emphasis-array to a runArray
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    text emphasisCollection:(text emphasis asRunArray).
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    tree == #Error ifTrue:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
    99
	"/ mhmh - which is better ...
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   100
	"/ alternative1: color rest after error in red
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   101
"/        text
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   102
"/            emphasizeFrom:(parser sourceStream position)
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   103
"/            to:text size
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
"/            with:(#color->Color red).
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   107
	"/ alternative2: take original emphasis for rest
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   109
	endPos := parser sourceStream position1Based.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   110
	endPos >= text size ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   111
	    ^ text
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   112
	].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   113
	^ ((text copyTo:endPos) , (aString copyFrom:(endPos+1))).
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   115
	"/ alternative3: no emphasis for rest.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
"/        ^ text "/ aString
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
    ].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
    ^ text
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
    "
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
     self
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   123
	formatExpression:'(1 + 2) max:5'
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   124
	in:UndefinedObject
12636
520a881e7e0f class: SyntaxHighlighter2
Claus Gittinger <cg@exept.de>
parents: 11859
diff changeset
   125
    "
520a881e7e0f class: SyntaxHighlighter2
Claus Gittinger <cg@exept.de>
parents: 11859
diff changeset
   126
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
    "Created: / 25-07-2010 / 08:56:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    "Modified: / 25-07-2010 / 10:57:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
formatMethod:aString in:aClass using:preferencesOrNil elementsInto: elements
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
    "format (recolor) a method in a given class.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
     Return the text containing font changes and color information."
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
10152
561883853228 comment/format in: #formatMethod:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 10150
diff changeset
   135
    "/ obsolete interface
10150
3792ee8840ea added: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 10067
diff changeset
   136
    ^ self
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   137
	formatMethod:nil
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   138
	source:aString
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   139
	in:aClass
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   140
	using:preferencesOrNil elementsInto:elements
10150
3792ee8840ea added: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 10067
diff changeset
   141
3792ee8840ea added: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 10067
diff changeset
   142
    "Created: / 25-07-2010 / 08:56:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10152
561883853228 comment/format in: #formatMethod:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 10150
diff changeset
   143
    "Modified (comment): / 05-07-2011 / 11:07:50 / cg"
10150
3792ee8840ea added: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 10067
diff changeset
   144
!
3792ee8840ea added: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 10067
diff changeset
   145
3792ee8840ea added: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 10067
diff changeset
   146
formatMethod:aMethodOrNil source:aString in:aClass using:preferencesOrNil elementsInto: elements
3792ee8840ea added: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 10067
diff changeset
   147
    "format (recolor) a method in a given class.
3792ee8840ea added: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 10067
diff changeset
   148
     Return the text containing font changes and color information."
3792ee8840ea added: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 10067
diff changeset
   149
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
    |highlighter tree text endPos eColor|
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    aString isNil ifTrue:[^ nil].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
    Error handle:[:ex |
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   155
	ex creator isHandled ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   156
	    ex reject.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   157
	].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   158
	(self parseErrorSignal handles:ex) ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   159
	    "Parse error may happen when re-formatting incomplete code while editing"
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   160
	    ('SyntaxHighlighter [info]: error during highlight: ' , ex description) infoPrintCR.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   161
	    "/ ex suspendedContext fullPrintAll.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   162
	].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   163
	^ aString
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
    ] do:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   165
	highlighter := self for:(ReadStream on:aString string) in:aClass.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   166
	highlighter elements: elements.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   167
	preferencesOrNil notNil ifTrue:[highlighter preferences:preferencesOrNil].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   168
	"/ highlighter ignoreErrors:true.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   169
	highlighter ignoreWarnings:true.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   170
	highlighter sourceText:(text := aString string asText).
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   171
	"/ use an array here - this can be changed much faster using #at:put:
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   172
	text emphasisCollection:(Array new:aString size).
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   174
	tree := highlighter parseMethod.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   175
	"/ now, convert the emphasis-array to a runArray
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   176
	text emphasisCollection:(text emphasis asRunArray).
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   178
	tree == #Error ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   179
	    eColor := UserPreferences current errorColor.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   180
	    eColor notNil ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   181
		"/ mhmh - which is better ...
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   182
		"/ alternative1: color rest after error in red
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   183
		text
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   184
		    emphasizeFrom:(highlighter sourceStream position1Based)
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   185
		    to:text size
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   186
		    with:(#color->eColor).
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   187
	    ] ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   188
		"/ alternative2: take original emphasis for rest
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   190
		endPos := highlighter sourceStream position1Based.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   191
		endPos >= text size ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   192
		    ^ Array with: text with: highlighter elements
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   193
		].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   194
		^ ((text copyTo:endPos) , (aString copyFrom:(endPos+1)))
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   195
	    ].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   196
	    "/ alternative3: no emphasis for rest.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   197
	].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   198
	^text
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
    ]
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
    "
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
     self
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   202
	formatMethod:'foo
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    ^ self bar:''hello''.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
    ' , (Character doubleQuote asString) , 'some comment' , (Character doubleQuote asString) , '
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
'
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   207
	in:UndefinedObject
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
    "
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
    "Modified: / 22-08-2006 / 13:32:04 / cg"
10150
3792ee8840ea added: #formatMethod:source:in:using:elementsInto:
Claus Gittinger <cg@exept.de>
parents: 10067
diff changeset
   211
    "Created: / 05-07-2011 / 10:39:21 / cg"
12806
d550d7de8e2d Fix in SyntaxHighlighter2>>#formatMethod:source:in:using:elementsInto:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12683
diff changeset
   212
    "Modified: / 28-05-2013 / 22:45:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
! !
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
!SyntaxHighlighter2 methodsFor:'accessing'!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
elements
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
    ^ elements
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   221
elements:aParseTreeIndex
10633
48c904090606 class definition
Claus Gittinger <cg@exept.de>
parents: 10428
diff changeset
   222
    "the element collection, to collect variables, selectors etc. into"
48c904090606 class definition
Claus Gittinger <cg@exept.de>
parents: 10428
diff changeset
   223
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   224
    elements := aParseTreeIndex.
10633
48c904090606 class definition
Claus Gittinger <cg@exept.de>
parents: 10428
diff changeset
   225
48c904090606 class definition
Claus Gittinger <cg@exept.de>
parents: 10428
diff changeset
   226
    "Modified (comment): / 21-08-2011 / 09:13:31 / cg"
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   227
!
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   228
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   229
tree: aParseNode
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   230
    super tree: aParseNode.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   231
    elements tree: aParseNode
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   232
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   233
    "Created: / 16-02-2012 / 09:56:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
! !
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
!SyntaxHighlighter2 methodsFor:'initialization'!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
initialize
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
    super initialize.
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   241
    elements := ParseTreeIndex new.
10633
48c904090606 class definition
Claus Gittinger <cg@exept.de>
parents: 10428
diff changeset
   242
    lastVariableElements := Dictionary new.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
    "Created: / 14-02-2010 / 13:08:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10633
48c904090606 class definition
Claus Gittinger <cg@exept.de>
parents: 10428
diff changeset
   245
    "Modified: / 21-08-2011 / 09:37:35 / cg"
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   246
    "Modified: / 16-02-2012 / 09:59:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
! !
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
!SyntaxHighlighter2 methodsFor:'parsing-expressions'!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   251
_binaryExpressionFor:receiverArg
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
    "parse a binary-expression; return a node-tree, nil or #Error"
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
11152
c9a386e4f1e0 refactored plausibility checks
Claus Gittinger <cg@exept.de>
parents: 10882
diff changeset
   254
    |receiver expr arg sel pos1 pos2 lno|
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
    receiver := receiverArg.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
    (receiver == #Error) ifTrue:[^ #Error].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
    "special kludge: since Scanner cannot know if -digit is a binary
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
     expression or a negative constant, handle cases here"
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   262
    [(tokenType == #BinaryOperator)
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
     or:[(tokenType == $|)
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
     or:[(tokenType == $^ and:[parserFlags allowCaretAsBinop])
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   265
	 or:[((tokenType == #Integer) or:[tokenType == #Float])
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   266
	     and:[tokenValue < 0]]]]
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
    ] whileTrue:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   268
	"/ kludge alarm: in a function-call argList, #, is not a binarySelector
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   269
	inFunctionCallArgument == true ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   270
	    ((tokenType == #BinaryOperator) and:[tokenName = ',']) ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   271
		^ receiver
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   272
	    ].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   273
	].
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   275
	pos1 := tokenPosition.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   276
	lno := tokenLineNr.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   278
	"/ kludge alarm: bar, caret and minus are not scanned as binop
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   279
	(tokenType == $|) ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   280
	    sel := '|'.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   281
	    sel := self selectorCheck:sel for:receiver position:tokenPosition to:tokenPosition.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   282
	    self nextToken.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   283
	] ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   284
	    (tokenType == $^) ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   285
		sel := '^'.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   286
		sel := self selectorCheck:sel for:receiver position:tokenPosition to:tokenPosition.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   287
		self nextToken.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   288
	    ] ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   289
		(tokenType == #BinaryOperator) ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   290
		    sel := tokenName.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   291
		    sel := self selectorCheck:sel for:receiver position:tokenPosition to:(tokenPosition + tokenName size - 1).
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   292
		    self nextToken
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   293
		] ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   294
		    sel := '-'.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   295
		    token := tokenValue := tokenValue negated.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   296
		    tokenPosition := tokenPosition + 1. "/ to skip the sign
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   297
		]
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   298
	    ].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   299
	].
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   301
	pos2 := pos1 + sel size - 1.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   302
	self markSelector:sel from:pos1 to:pos2 receiverNode:receiver.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   303
	lastSelectorElement := nil.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   305
	arg := self unaryExpression.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   306
	(arg == #Error) ifTrue:[^ #Error].
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   308
	expr := BinaryNode receiver:receiver selector:sel arg:arg fold:foldConstants.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   309
	expr isErrorNode ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   310
	    self parseError:(expr errorString) position:pos1 to:tokenPosition.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   311
	    errorFlag := false. "ok, user wants it - so he'll get it"
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   312
	    expr := BinaryNode receiver:receiver selector:sel arg:arg fold:nil.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   313
	].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   314
	expr lineNumber:lno.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   315
	expr selectorPosition:pos1.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   317
	self checkPlausibilityOf:expr from:pos1 to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   318
	parseForCode ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   319
	    self rememberSelectorUsed:sel receiver:receiver
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   320
	].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   321
	receiver := expr.   "/ for next message
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
    ].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
    ^ receiver
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
    "Modified: / 09-01-1998 / 19:05:18 / stefan"
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
    "Modified: / 14-02-2010 / 17:54:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11152
c9a386e4f1e0 refactored plausibility checks
Claus Gittinger <cg@exept.de>
parents: 10882
diff changeset
   327
    "Modified: / 19-01-2012 / 10:46:49 / cg"
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   328
    "Created: / 16-02-2012 / 21:54:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   331
_keywordExpressionFor:receiverArg
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
    "parse a keyword-expression; return a node-tree, nil or #Error.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
     keywordExpression ::= binaryexpression
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   335
			   | { KEYWORD-PART binaryExpression }
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
    "
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
11152
c9a386e4f1e0 refactored plausibility checks
Claus Gittinger <cg@exept.de>
parents: 10882
diff changeset
   338
    |expr receiver sel arg args posR1 posR2 pos1 pos2 lno positions constVal|
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
    receiver := receiverArg.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
    posR1 := tokenPosition.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
    (tokenType == #Keyword) ifFalse:[^ receiver].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
    pos1 := posR2 := tokenPosition.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
    pos2 := tokenPosition + tokenName size - 1.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
    positions := OrderedCollection with:(pos1 to:pos2).
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
    sel := tokenName.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
    lno := tokenLineNr.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
    self nextToken.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
    arg := self binaryExpression.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
    (arg == #Error) ifTrue:[^ #Error].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
    args := Array with:arg.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
    [tokenType == #Keyword] whileTrue:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   354
	sel := sel , tokenName.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   355
	pos2 := tokenPosition + tokenName size - 1.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   356
	positions add:(tokenPosition to:pos2).
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   357
	self nextToken.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   358
	arg := self binaryExpression.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   359
	(arg == #Error) ifTrue:[^ #Error].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   360
	args := args copyWith:arg.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
    ].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
    positions do:[:p |
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   364
	self markSelector:sel from:p start to:p stop receiverNode:receiver.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
    ].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
    lastSelectorElement := nil.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
    sel := self selectorCheck:sel for:receiver positions:positions.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
    ignoreWarnings ifFalse:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   370
	(Class definitionSelectors includes:sel) ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   371
	    (receiver isVariable and:[receiver isUndeclared]) ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   372
		"this is not an error - the undefined class may be loaded after this code!!"
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   373
		self warning:('as yet undefined superclass: ' , receiver name) position:pos1 to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   374
	    ].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   375
	].
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
    ].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
    expr := MessageNode receiver:receiver selector:sel args:args fold:foldConstants.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
    expr isErrorNode ifTrue:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   380
	self parseError:(expr errorString) position:pos1 to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   381
	errorFlag := false. "ok, user wants it - so he'll get it"
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   382
	expr := MessageNode receiver:receiver selector:sel args:args fold:nil.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
    ].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
    expr lineNumber:lno.
11152
c9a386e4f1e0 refactored plausibility checks
Claus Gittinger <cg@exept.de>
parents: 10882
diff changeset
   385
    self checkPlausibilityOf:expr from:pos1 to:pos2.
12683
e094e18bfd10 Fix in SyntaxHiglighter2 after bad merge
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12682
diff changeset
   386
    parseForCode ifFalse:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   387
	self rememberSelectorUsed:sel receiver:receiver
12683
e094e18bfd10 Fix in SyntaxHiglighter2 after bad merge
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12682
diff changeset
   388
    ].
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
"/        (contextToEvaluateIn isNil and:[selfValue isNil]) ifTrue:[    "/ do not check this for doits
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
"/            receiver isSuper ifTrue:[
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
"/                sel ~= selector ifTrue:[
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   393
"/                    self warnCommonMistake:'possible bad super message (selector should be same as in current method) ?'
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
"/                                  position:posR1 to:posR2-1
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
"/                ].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
"/            ].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
"/        ].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
"/
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
    (sel = #ifTrue: or:[sel = #ifFalse: or:[sel = #ifTrue:ifFalse: or:[sel = #ifFalse:ifTrue:]]]) ifTrue:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   401
	(expr receiver withConstantValueDo:[:val | constVal := val]) ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   402
	    |indexOfArgNotExecuted|
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   403
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   404
	    "/ receiver evaluates to a constant
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   405
	    constVal == true ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   406
		(sel startsWith: #ifFalse:) ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   407
		    indexOfArgNotExecuted := 1.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   408
		] ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   409
		    indexOfArgNotExecuted := 2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   410
		]
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   411
	    ].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   412
	    constVal == false ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   413
		(sel startsWith: #ifTrue:) ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   414
		    indexOfArgNotExecuted := 1.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   415
		] ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   416
		    indexOfArgNotExecuted := 2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   417
		]
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   418
	    ].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   419
	    indexOfArgNotExecuted == 2 ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   420
		args size == 1 ifTrue:[ indexOfArgNotExecuted := nil]
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   421
	    ].
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   423
	    indexOfArgNotExecuted notNil ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   424
		|argIsNotExecuted|
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   426
		"/ self warning:'receiver is constant; arg',indexOfArgNotExecuted printString,' is never executed' position:pos1 to:tokenPosition.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   427
		argIsNotExecuted := expr args at:indexOfArgNotExecuted.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   428
		argIsNotExecuted isBlockNode ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   429
		    self markCommentFrom:argIsNotExecuted startPosition to:argIsNotExecuted endPosition.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   430
		].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   431
	    ].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   432
	].
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   433
    ].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   435
    (ignoreErrors or:[ignoreWarnings]) ifFalse:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   436
	(sel = #and: or:[sel = #or:]) ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   437
	    expr arg1 isBlock ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   438
		(expr arg1 isVariable
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   439
		and:[ (expr arg1 name asLowercase includesString:'block')]) ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   440
		    self warnCommonMistake:'(possible common mistake) missing block brackets ?'
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   441
			      position:pos2+1 to:tokenPosition-1
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   442
		]
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   443
	    ].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   444
	    ^ expr.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   445
	].
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   447
	(sel = #whileTrue: or:[sel = #whileFalse:]) ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   448
	    expr receiver isBlock ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   449
		(expr receiver isVariable
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   450
		and:[ (expr receiver name asLowercase includesString:'block')]) ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   451
		    self warnCommonMistake:'(possible common mistake) missing block brackets ?'
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   452
			      position:pos1 to:pos2
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   453
		]
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   454
	    ].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   455
	    ^ expr.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   456
	].
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   457
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   458
	(sel = #ifTrue: or:[sel = #ifFalse:]) ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   459
	    expr receiver isMessage ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   460
		(expr receiver selector = #whileTrue or:[expr receiver selector = #whileFalse]) ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   461
		    self warnCommonMistake:'strange receiver expression'
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   462
			      position:pos1 to:pos2
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   463
		].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   464
	    ].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   465
	    ^ expr
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   466
	].
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   467
    ].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   468
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
    ^ expr.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   471
    "Modified: / 14-02-2010 / 17:58:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11152
c9a386e4f1e0 refactored plausibility checks
Claus Gittinger <cg@exept.de>
parents: 10882
diff changeset
   472
    "Modified: / 19-01-2012 / 10:47:01 / cg"
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   473
    "Created: / 16-02-2012 / 21:54:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   475
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   476
_unaryExpressionFor:receiverArg
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   477
    "parse a unary-expression; return a node-tree, nil or #Error"
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   478
11152
c9a386e4f1e0 refactored plausibility checks
Claus Gittinger <cg@exept.de>
parents: 10882
diff changeset
   479
    |receiver expr sel pos pos2 lNr arguments|
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   480
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   481
    receiver := receiverArg.
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
    (receiver == #Error) ifTrue:[^ #Error].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   483
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
    [ self isValidUnarySelector:tokenType ] whileTrue:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   485
	pos := tokenPosition.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   486
	pos2 := pos + tokenName size - 1.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   487
	lNr := tokenLineNr.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   488
	sel := tokenName.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   490
	self markSelector:sel from:pos to:pos2 receiverNode:receiver.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   491
	lastSelectorElement := nil.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   493
	self nextToken.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   494
	tokenType == $( ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   495
	    parserFlags allowSqueakExtensions == true ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   496
		"/ croquet/squeak extension - c/java-style arguments
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   497
		arguments := self functionCallArgList.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   498
		"/ synthetic selector: foo[:[with:[with:[...]]]]
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   499
		arguments notEmpty ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   500
		    sel := sel , ':'.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   501
		    arguments size - 1 timesRepeat:[ sel := sel , 'with:' ].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   502
		].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   503
		sel := self selectorCheck:sel for:receiver position:pos to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   504
		expr := MessageNode receiver:receiver selector:sel args:arguments fold:foldConstants.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   505
		expr isErrorNode ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   506
		    self parseError:(expr errorString) position:pos to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   507
		    errorFlag := false. "ok, user wants it - so he'll get it"
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   508
		    expr := MessageNode receiver:receiver selector:sel args:arguments fold:nil.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   509
		].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   510
		expr lineNumber:lNr.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   511
		self checkPlausibilityOf:expr from:pos to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   512
		parseForCode ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   513
		    self rememberSelectorUsed:sel receiver:receiver
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   514
		].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   515
		^ expr.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   516
	    ].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   517
	].
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   518
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   519
	sel := self selectorCheck:sel for:receiver position:pos to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   520
	expr := UnaryNode receiver:receiver selector:sel fold:foldConstants.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   521
	expr isErrorNode ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   522
	    self warning:(expr errorString , '.\\If you proceed, that error will happen at runtime.') withCRs position:pos to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   523
	    errorFlag := false. "ok, user wants it - so he'll get it"
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   524
	    expr := UnaryNode receiver:receiver selector:sel fold:nil.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   525
	].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   526
	expr lineNumber:lNr.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   527
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   528
	self checkPlausibilityOf:expr from:pos to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   529
	parseForCode ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   530
	    self rememberSelectorUsed:sel receiver:receiver
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   531
	].
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   532
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   533
	receiver := expr.   "/ for next message
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   534
    ].
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   535
    ^ receiver
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   536
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   537
    "Modified: / 14-02-2010 / 17:56:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11152
c9a386e4f1e0 refactored plausibility checks
Claus Gittinger <cg@exept.de>
parents: 10882
diff changeset
   538
    "Modified: / 19-01-2012 / 10:47:37 / cg"
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   539
    "Created: / 16-02-2012 / 21:54:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   540
!
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   541
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   542
binaryExpression
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   543
    | node savedLastSelectorElement |
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   544
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   545
    savedLastSelectorElement := lastSelectorElement.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   546
    lastSelectorElement := nil.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   547
    node := super binaryExpression.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   548
    (lastSelectorElement notNil and:[node ~~ #Error and:[node isMessage]]) ifTrue:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   549
	lastSelectorElement node parent: node.
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   550
    ].
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   551
    lastSelectorElement := savedLastSelectorElement.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   552
    ^node
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   553
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   554
    "Modified: / 19-01-2000 / 16:22:16 / cg"
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   555
    "Created: / 16-02-2012 / 21:56:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   556
!
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   557
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   558
expression
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   559
    | node savedLastSelectorElement |
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   560
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   561
    savedLastSelectorElement := lastSelectorElement.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   562
    lastSelectorElement := nil.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   563
    node := super expression.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   564
    ((node ~~ #Error) and:[node isMessage]) ifTrue:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   565
	[ lastSelectorElement notNil ] whileTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   566
	    lastSelectorElement node parent: node.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   567
	    lastSelectorElement := lastSelectorElement prev.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   568
	].
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   569
    ].
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   570
    lastSelectorElement := savedLastSelectorElement.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   571
    ^node
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   572
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   573
    "Modified: / 19-01-2000 / 16:22:16 / cg"
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   574
    "Modified: / 16-02-2012 / 23:39:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   575
!
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   576
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   577
unaryExpressionFor:receiverArg
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   578
    "parse a unary-expression; return a node-tree, nil or #Error"
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   579
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   580
    |receiver expr sel pos pos2 lNr arguments savedLastSelectorElement|
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   581
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   582
    savedLastSelectorElement := lastSelectorElement.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   583
    receiver := receiverArg.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   584
    (receiver == #Error) ifTrue:[^ #Error].
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   585
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   586
    [ self isValidUnarySelector:tokenType ] whileTrue:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   587
	pos := tokenPosition.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   588
	pos2 := pos + tokenName size - 1.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   589
	lNr := tokenLineNr.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   590
	sel := tokenName.
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   591
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   592
	lastSelectorElement := nil.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   593
	self markSelector:sel from:pos to:pos2 receiverNode:receiver.
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   594
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   595
	self nextToken.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   596
	tokenType == $( ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   597
	    parserFlags allowSqueakExtensions == true ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   598
		"/ croquet/squeak extension - c/java-style arguments
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   599
		arguments := self functionCallArgList.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   600
		"/ synthetic selector: foo[:[with:[with:[...]]]]
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   601
		arguments notEmpty ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   602
		    sel := sel , ':'.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   603
		    arguments size - 1 timesRepeat:[ sel := sel , 'with:' ].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   604
		].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   605
		sel := self selectorCheck:sel for:receiver position:pos to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   606
		expr := MessageNode receiver:receiver selector:sel args:arguments fold:foldConstants.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   607
		expr isErrorNode ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   608
		    self parseError:(expr errorString) position:pos to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   609
		    errorFlag := false. "ok, user wants it - so he'll get it"
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   610
		    expr := MessageNode receiver:receiver selector:sel args:arguments fold:nil.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   611
		].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   612
		lastSelectorElement node parent: expr.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   613
		expr lineNumber:lNr.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   614
		self checkPlausibilityOf:expr from:pos to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   615
		parseForCode ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   616
		    self rememberSelectorUsed:sel receiver:receiver
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   617
		].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   618
		^ expr.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   619
	    ].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   620
	].
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   621
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   622
	sel := self selectorCheck:sel for:receiver position:pos to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   623
	expr := UnaryNode receiver:receiver selector:sel fold:foldConstants.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   624
	expr isErrorNode ifTrue:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   625
	    self warning:(expr errorString , '.\\If you proceed, that error will happen at runtime.') withCRs position:pos to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   626
	    errorFlag := false. "ok, user wants it - so he'll get it"
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   627
	    expr := UnaryNode receiver:receiver selector:sel fold:nil.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   628
	].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   629
	expr lineNumber:lNr.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   630
	lastSelectorElement node parent: expr.
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   631
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   632
	self checkPlausibilityOf:expr from:pos to:pos2.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   633
	parseForCode ifFalse:[
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   634
	    self rememberSelectorUsed:sel receiver:receiver
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   635
	].
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   636
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   637
	receiver := expr.   "/ for next message
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   638
    ].
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   639
    lastSelectorElement := savedLastSelectorElement.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   640
    ^ receiver
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   641
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   642
    "Modified: / 19-01-2012 / 10:47:37 / cg"
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   643
    "Created: / 16-02-2012 / 23:50:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   644
!
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   645
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   646
variable
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   647
    | node |
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   648
12194
4639848e5517 Improvements in syntax highlighting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12170
diff changeset
   649
    ignoreBadIdentifier := classToCompileFor isNil.
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   650
    node := super variable.
12194
4639848e5517 Improvements in syntax highlighting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12170
diff changeset
   651
    ignoreBadIdentifier := false.
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   652
    node isVariable ifTrue:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   653
	| el prevEl |
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   654
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   655
	el := elements newElementFor: node.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   656
	prevEl := lastVariableElements at:node name ifAbsent:[nil].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   657
	prevEl notNil ifTrue:[prevEl next:el].
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   658
	lastVariableElements at:node name put:el.
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   659
	elements add: el.
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   660
    ].
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   661
    ^node
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   662
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   663
    "Modified: / 19-01-2000 / 16:22:16 / cg"
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   664
    "Created: / 16-02-2012 / 22:21:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   665
! !
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   666
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   667
!SyntaxHighlighter2 methodsFor:'syntax detection'!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   668
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   669
markArgumentIdentifierFrom:pos1 to:pos2
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   670
    | node el prevEl |
12984
65d53f09f5ac class: SyntaxHighlighter2
Claus Gittinger <cg@exept.de>
parents: 12979
diff changeset
   671
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   672
    super markArgumentIdentifierFrom:pos1 to:pos2.
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   673
    node := VariableNode methodArgumentNamed:(sourceText string copyFrom: pos1 to: pos2).
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   674
    node startPosition: pos1 endPosition: pos2.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   675
    el := elements newElementFor: node.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   676
    prevEl := lastVariableElements at:node name ifAbsent:[nil].
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   677
    prevEl notNil ifTrue:[prevEl next:el].
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   678
    lastVariableElements at:node name put:el.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   679
    elements add: el.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   680
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   681
    "Created: / 24-07-2010 / 09:25:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10633
48c904090606 class definition
Claus Gittinger <cg@exept.de>
parents: 10428
diff changeset
   682
    "Modified: / 21-08-2011 / 09:27:26 / cg"
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   683
    "Modified: / 16-02-2012 / 22:34:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12984
65d53f09f5ac class: SyntaxHighlighter2
Claus Gittinger <cg@exept.de>
parents: 12979
diff changeset
   684
!
65d53f09f5ac class: SyntaxHighlighter2
Claus Gittinger <cg@exept.de>
parents: 12979
diff changeset
   685
12194
4639848e5517 Improvements in syntax highlighting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12170
diff changeset
   686
markBadIdentifierFrom:pos1 to:pos2
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   687
12194
4639848e5517 Improvements in syntax highlighting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12170
diff changeset
   688
    super markBadIdentifierFrom:pos1 to:pos2
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   689
12194
4639848e5517 Improvements in syntax highlighting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12170
diff changeset
   690
    "Created: / 17-03-2012 / 19:02:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   691
!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   692
12987
306d6dc6ffbb class: SyntaxHighlighter2
Claus Gittinger <cg@exept.de>
parents: 12984
diff changeset
   693
markLocalIdentifierFrom:pos1 to:pos2
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   694
    | node el prevEl |
12987
306d6dc6ffbb class: SyntaxHighlighter2
Claus Gittinger <cg@exept.de>
parents: 12984
diff changeset
   695
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   696
    super markLocalIdentifierFrom:pos1 to:pos2.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   697
    node := VariableNode methodLocalNamed:(sourceText string copyFrom: pos1 to: pos2).
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   698
    node startPosition: pos1 endPosition: pos2.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   699
    el := elements newElementFor: node.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   700
    prevEl := lastVariableElements at:node name ifAbsent:[nil].
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   701
    prevEl notNil ifTrue:[prevEl next:el].
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   702
    lastVariableElements at:node name put:el.
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   703
    elements add: el.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   704
12911
6a562c9a975e class: SyntaxHighlighter2
Claus Gittinger <cg@exept.de>
parents: 12689
diff changeset
   705
    "Modified: / 21-08-2011 / 09:27:26 / cg"
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   706
    "Created: / 16-02-2012 / 22:36:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   707
!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   708
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   709
markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   710
12672
91288323803d class: SyntaxHighlighter2
Stefan Vogel <sv@exept.de>
parents: 12636
diff changeset
   711
    | element selectorSymbol |
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   712
12233
f71206c1d1dd - SyntaxHighlighter2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12229
diff changeset
   713
    "Special hack for Java class references - I would like to have them
f71206c1d1dd - SyntaxHighlighter2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12229
diff changeset
   714
     marked specially (and not as an error when the class is not yet loaded -
f71206c1d1dd - SyntaxHighlighter2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12229
diff changeset
   715
     the code is correct as JavaClassAccessor loads it lazily"
f71206c1d1dd - SyntaxHighlighter2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12229
diff changeset
   716
    (aReceiverNode isJavaPackageReference) ifTrue:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   717
	self
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   718
	    markFrom:pos1 to:pos2
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   719
	    withEmphasis:preferences globalClassIdentifierEmphasis
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   720
	    color: preferences globalClassIdentifierColor
12233
f71206c1d1dd - SyntaxHighlighter2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12229
diff changeset
   721
    ] ifFalse:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   722
	super markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode.
12233
f71206c1d1dd - SyntaxHighlighter2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12229
diff changeset
   723
    ].
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   724
12672
91288323803d class: SyntaxHighlighter2
Stefan Vogel <sv@exept.de>
parents: 12636
diff changeset
   725
    "don't create symbols for partial typed selectors"
91288323803d class: SyntaxHighlighter2
Stefan Vogel <sv@exept.de>
parents: 12636
diff changeset
   726
    selectorSymbol := selectorString asSymbolIfInterned.
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   727
12683
e094e18bfd10 Fix in SyntaxHiglighter2 after bad merge
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12682
diff changeset
   728
    element := elements newElementFor: (SelectorNode value: selectorString from: pos1 to: pos2).
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   729
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   730
    (lastSelectorElement notNil "and:[lastSelectorElement value = selectorString]") ifTrue:[
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   731
	lastSelectorElement next: element.
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   732
    ].
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   733
    elements add: element.
12168
95a3a7290554 Fixes, some support for SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   734
    lastSelectorElement := "(self isValidUnarySelector:tokenType)"false
13178
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   735
				ifTrue:[nil]
c9bf900fe729 Merged f8f283ea3f4c and 131bed1fbee2 (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13176 12987
diff changeset
   736
				ifFalse:[element].
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   737
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   738
    "Created: / 14-02-2010 / 17:40:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   739
    "Modified: / 14-02-2010 / 19:24:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10633
48c904090606 class definition
Claus Gittinger <cg@exept.de>
parents: 10428
diff changeset
   740
    "Modified (format): / 21-08-2011 / 09:18:21 / cg"
12233
f71206c1d1dd - SyntaxHighlighter2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12229
diff changeset
   741
    "Modified: / 19-04-2012 / 09:53:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   742
!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   743
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   744
markUnknownIdentifierFrom:pos1 to:pos2
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   745
12194
4639848e5517 Improvements in syntax highlighting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12170
diff changeset
   746
    ignoreBadIdentifier == true ifTrue:[ ^ self ].
10633
48c904090606 class definition
Claus Gittinger <cg@exept.de>
parents: 10428
diff changeset
   747
12194
4639848e5517 Improvements in syntax highlighting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12170
diff changeset
   748
    super markUnknownIdentifierFrom:pos1 to:pos2
10633
48c904090606 class definition
Claus Gittinger <cg@exept.de>
parents: 10428
diff changeset
   749
12194
4639848e5517 Improvements in syntax highlighting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12170
diff changeset
   750
    "Created: / 31.3.1998 / 19:09:26 / cg"
4639848e5517 Improvements in syntax highlighting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12170
diff changeset
   751
    "Modified: / 31.3.1998 / 19:10:30 / cg"
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   752
! !
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   753
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   754
!SyntaxHighlighter2 class methodsFor:'documentation'!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   755
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   756
version_CVS
12979
560f12815e0f SyntaxElementVariable
Claus Gittinger <cg@exept.de>
parents: 12911
diff changeset
   757
    ^ '$Header: /cvs/stx/stx/libtool/SyntaxHighlighter2.st,v 1.15 2013-06-23 10:44:44 cg Exp $'
12984
65d53f09f5ac class: SyntaxHighlighter2
Claus Gittinger <cg@exept.de>
parents: 12979
diff changeset
   758
!
65d53f09f5ac class: SyntaxHighlighter2
Claus Gittinger <cg@exept.de>
parents: 12979
diff changeset
   759
12431
9f0c59c742d5 Added LintRuleSettingsApplication and LintRuleEditDialog to define user-defined rule sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12406
diff changeset
   760
version_HG
9f0c59c742d5 Added LintRuleSettingsApplication and LintRuleEditDialog to define user-defined rule sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12406
diff changeset
   761
9f0c59c742d5 Added LintRuleSettingsApplication and LintRuleEditDialog to define user-defined rule sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12406
diff changeset
   762
    ^ '$Changeset: <not expanded> $'
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   763
!
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   764
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   765
version_SVN
12979
560f12815e0f SyntaxElementVariable
Claus Gittinger <cg@exept.de>
parents: 12911
diff changeset
   766
    ^ '$Id: SyntaxHighlighter2.st,v 1.15 2013-06-23 10:44:44 cg Exp $'
10022
a51c7fd32748 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   767
! !