ReadEvalPrintLoop.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 10 Jun 2015 08:43:00 +0100
branchjv
changeset 18482 68a43e2b3e78
parent 18120 e3a375d5f6a8
child 19410 f9d7cb8bd74c
permissions -rw-r--r--
Merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10249
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
     1
"
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
     3
	      All Rights Reserved
10249
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
     4
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
     5
 This software is furnished under a license and may be used
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
     6
 only in accordance with the terms of that license and with the
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
     8
 be provided or otherwise made available to, or used by, any
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
     9
 other person.  No title to or ownership of the software is
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    10
 hereby transferred.
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    11
"
10248
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libbasic' }"
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
Object subclass:#ReadEvalPrintLoop
16228
85589db2091a class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16145
diff changeset
    15
	instanceVariableNames:'inputStream outputStream errorStream compiler prompt
85589db2091a class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16145
diff changeset
    16
		doChunkFormat traceFlag timingFlag printFlag exitAction
85589db2091a class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16145
diff changeset
    17
		currentDirectory'
85589db2091a class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16145
diff changeset
    18
	classVariableNames:''
85589db2091a class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16145
diff changeset
    19
	poolDictionaries:''
85589db2091a class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16145
diff changeset
    20
	category:'System-Support'
10248
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
10249
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    23
!ReadEvalPrintLoop class methodsFor:'documentation'!
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    24
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    25
copyright
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    26
"
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    27
 COPYRIGHT (c) 2006 by eXept Software AG
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
    28
	      All Rights Reserved
10249
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    29
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    30
 This software is furnished under a license and may be used
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    31
 only in accordance with the terms of that license and with the
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    33
 be provided or otherwise made available to, or used by, any
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    34
 other person.  No title to or ownership of the software is
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    35
 hereby transferred.
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    36
"
10461
0b2935207fec +correctableError:position:to:
Claus Gittinger <cg@exept.de>
parents: 10277
diff changeset
    37
!
0b2935207fec +correctableError:position:to:
Claus Gittinger <cg@exept.de>
parents: 10277
diff changeset
    38
0b2935207fec +correctableError:position:to:
Claus Gittinger <cg@exept.de>
parents: 10277
diff changeset
    39
documentation
0b2935207fec +correctableError:position:to:
Claus Gittinger <cg@exept.de>
parents: 10277
diff changeset
    40
"
0b2935207fec +correctableError:position:to:
Claus Gittinger <cg@exept.de>
parents: 10277
diff changeset
    41
    A simple read-eval-print loop for non-GUI or stscript operation.
16081
a61f3489d983 class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 15702
diff changeset
    42
    Invoked, for example if stx is started with a --repl argument.
a61f3489d983 class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 15702
diff changeset
    43
.
10628
284266d54dbe #exit only leaves the rep-loop
Claus Gittinger <cg@exept.de>
parents: 10500
diff changeset
    44
    A line starting with '?' shows the usage message.
284266d54dbe #exit only leaves the rep-loop
Claus Gittinger <cg@exept.de>
parents: 10500
diff changeset
    45
    Lines starting with '#' are directives:
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
    46
	#exit   - exit the rep-loop
10628
284266d54dbe #exit only leaves the rep-loop
Claus Gittinger <cg@exept.de>
parents: 10500
diff changeset
    47
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    48
    The input can be in one of two formats:
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
    49
	1) traditional chunk format (bang-separated chunks, bangs duplicated)
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
    50
	  this is the traditional fileIn format, as generated by fileOut from the browser
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    51
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
    52
	2) interactive line mode. Chunks are any number of lines up to either an empty line or
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
    53
	  a line ending in a period. This is more useful for an interactive REPL, where statements/expressions
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
    54
	  are entered linewise by a user.
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    55
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    56
    The input can is switched to non-chunk format whenever a line with a '#' in the first column appears.
10461
0b2935207fec +correctableError:position:to:
Claus Gittinger <cg@exept.de>
parents: 10277
diff changeset
    57
"
10249
4f4b81940a34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10248
diff changeset
    58
! !
10248
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
!ReadEvalPrintLoop methodsFor:'accessing'!
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
    62
compiler:something
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    63
    "assign a compiler to use;could be used to change the language"
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    64
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
    65
    compiler := something.
10248
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
!
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
10632
a4f695f8e0f9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
    68
doChunkFormat
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    69
    "true if currently reading chunk format"
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    70
10632
a4f695f8e0f9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
    71
    ^ doChunkFormat ? true
a4f695f8e0f9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
    72
a4f695f8e0f9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
    73
    "Created: / 07-12-2006 / 18:24:04 / cg"
a4f695f8e0f9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
    74
!
a4f695f8e0f9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
    75
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    76
doChunkFormat:aBoolean
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    77
    "enable/disable chunk format"
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    78
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    79
    doChunkFormat := aBoolean.
10254
e576d49220c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10253
diff changeset
    80
e576d49220c2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10253
diff changeset
    81
    "Created: / 07-12-2006 / 18:24:04 / cg"
10248
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
!
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    84
error:aStream
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    85
    "assign an error stream"
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    86
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    87
    errorStream := aStream.
10248
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    "Created: / 07-12-2006 / 17:33:39 / cg"
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
!
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
    92
errorStream
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    93
    "return the current error stream"
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    94
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
    95
    ^ errorStream ? Stderr
10256
63993a2b4d15 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10255
diff changeset
    96
63993a2b4d15 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10255
diff changeset
    97
    "Created: / 07-12-2006 / 19:11:56 / cg"
63993a2b4d15 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10255
diff changeset
    98
!
63993a2b4d15 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10255
diff changeset
    99
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   100
input:aStream
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   101
    "assign an input stream"
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   102
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   103
    inputStream := aStream asLineNumberReadStream.
10248
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    "Modified: / 07-12-2006 / 17:33:31 / cg"
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
!
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   108
inputStream
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   109
    "get the current input stream"
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   110
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   111
    ^ inputStream ? Stdin
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   112
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   113
    "Created: / 07-12-2006 / 19:12:13 / cg"
10256
63993a2b4d15 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10255
diff changeset
   114
!
63993a2b4d15 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10255
diff changeset
   115
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   116
output:aStream
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   117
    "assign an output stream"
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   118
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   119
    outputStream := aStream.
10248
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
    "Created: / 07-12-2006 / 17:27:48 / cg"
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
!
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   124
outputStream
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   125
    "return the current outpt stream"
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   126
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   127
    ^ outputStream ? Stdout
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   128
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   129
    "Created: / 07-12-2006 / 19:12:27 / cg"
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   130
!
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   131
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   132
prompt:aString
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   133
    "set the prompt"
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   134
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   135
    prompt := aString.
10248
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
! !
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
10631
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   138
!ReadEvalPrintLoop methodsFor:'compiler interface-error handling'!
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   139
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   140
correctableError:message position:pos1 to:pos2 from:aCompiler
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   141
    "compiler notifies us of an error - ignore it"
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   142
15702
01c33c1f4990 class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 15365
diff changeset
   143
    ^ false "/ no correction
10631
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   144
!
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   145
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   146
correctableSelectorWarning:aString position:relPos to:relEndPos from:aCompiler
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   147
    "compiler notifies us of a warning - ignore it"
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   148
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   149
    ^ false
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   150
!
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   151
13121
e0cc829d4b4d added: #correctableError:position:to:from:
Claus Gittinger <cg@exept.de>
parents: 10635
diff changeset
   152
correctableWarning:message position:pos1 to:pos2 from:aCompiler
e0cc829d4b4d added: #correctableError:position:to:from:
Claus Gittinger <cg@exept.de>
parents: 10635
diff changeset
   153
    "compiler notifies us of an error - ignore it"
e0cc829d4b4d added: #correctableError:position:to:from:
Claus Gittinger <cg@exept.de>
parents: 10635
diff changeset
   154
e0cc829d4b4d added: #correctableError:position:to:from:
Claus Gittinger <cg@exept.de>
parents: 10635
diff changeset
   155
    ^ false
e0cc829d4b4d added: #correctableError:position:to:from:
Claus Gittinger <cg@exept.de>
parents: 10635
diff changeset
   156
e0cc829d4b4d added: #correctableError:position:to:from:
Claus Gittinger <cg@exept.de>
parents: 10635
diff changeset
   157
    "Created: / 02-11-2010 / 13:29:22 / cg"
e0cc829d4b4d added: #correctableError:position:to:from:
Claus Gittinger <cg@exept.de>
parents: 10635
diff changeset
   158
!
e0cc829d4b4d added: #correctableError:position:to:from:
Claus Gittinger <cg@exept.de>
parents: 10635
diff changeset
   159
10631
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   160
error:aString position:relPos to:relEndPos from:aCompiler
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   161
    "compiler notifies us of a warning - ignore it"
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   162
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   163
    ^ false
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   164
!
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   165
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   166
unusedVariableWarning:aString position:relPos to:relEndPos from:aCompiler
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   167
    "compiler notifies us of a warning - ignore it"
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   168
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   169
    ^ false
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   170
!
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   171
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   172
warning:aString position:relPos to:relEndPos from:aCompiler
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   173
    "compiler notifies us of a warning - ignore it"
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   174
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   175
    ^ self
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   176
! !
39ebd04452ac *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10628
diff changeset
   177
10255
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   178
!ReadEvalPrintLoop methodsFor:'directives'!
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   179
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   180
cmd_clear:lineStream
10255
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   181
    self cmd_setOrClear:lineStream to:false
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   182
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   183
    "Created: / 07-12-2006 / 19:04:50 / cg"
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   184
!
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   185
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   186
cmd_exit:lineStream
10628
284266d54dbe #exit only leaves the rep-loop
Claus Gittinger <cg@exept.de>
parents: 10500
diff changeset
   187
    exitAction value
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   188
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   189
    "Created: / 07-12-2006 / 18:55:46 / cg"
10255
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   190
!
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   191
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   192
cmd_help:lineStream
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   193
    self errorStream
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   194
	nextPutAll:
16084
8fc6fc71a8cb class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16081
diff changeset
   195
'Everything entered up to an empty line or a line ending in "." is called a "chunk" and evaluated.
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   196
Lines starting with "#" are commands to the read-eval-print interpreter.
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   197
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   198
Valid commands are:
10635
c3c4fc186068 changed #interpreterLoopWith:
Claus Gittinger <cg@exept.de>
parents: 10632
diff changeset
   199
    #help ............... this text
c3c4fc186068 changed #interpreterLoopWith:
Claus Gittinger <cg@exept.de>
parents: 10632
diff changeset
   200
    #exit ............... exit interpreter loop
c3c4fc186068 changed #interpreterLoopWith:
Claus Gittinger <cg@exept.de>
parents: 10632
diff changeset
   201
    #use <package>....... use (load) a package
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   202
	stx:libwidg .............. GUI package
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   203
	stx:libtool .............. IDE tool package
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   204
	stx:goodies/regex ........ regex package
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   205
	stx:goodies/petitparser .. peg parser package
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   206
    #read <filename>..... read another script or source file
10635
c3c4fc186068 changed #interpreterLoopWith:
Claus Gittinger <cg@exept.de>
parents: 10632
diff changeset
   207
    #show <what> ........ show info
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   208
	variables .......... interpreter variables
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   209
	processes .......... processes
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   210
	memory ............. memory usage
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   211
	flags .............. flags
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   212
	modules ............ loaded modules
10635
c3c4fc186068 changed #interpreterLoopWith:
Claus Gittinger <cg@exept.de>
parents: 10632
diff changeset
   213
    #set/clear <flag> ... set or clear a flag
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   214
	trace .............. tracing execution
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   215
	timing ............. timing execution
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   216
	chunkFormat ........ traditional bang chunk format input mode
10257
2bc06451585b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10256
diff changeset
   217
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   218
The MiniDebugger (if entered) shows its own help with "?".
10255
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   219
'
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   220
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   221
    "Created: / 07-12-2006 / 18:54:20 / cg"
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   222
!
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   223
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   224
cmd_read:lineStream
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   225
    |filename newInput savedPrompt savedPrint savedInput savedCurrentDirectory|
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   226
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   227
    lineStream skipSeparators.
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   228
    filename := lineStream upToEnd withoutSeparators.
16133
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   229
    filename isNil ifTrue:[
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   230
	'? which file?' errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   231
	^ self.
16133
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   232
    ].
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   233
    filename := filename withoutSeparators.
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   234
    filename isEmpty ifTrue:[
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   235
	'? which file?' errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   236
	^ self.
16133
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   237
    ].
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   238
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   239
    filename := filename asFilename.
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   240
    filename isAbsolute ifFalse:[
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   241
	filename := currentDirectory construct:filename.
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   242
    ].
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   243
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   244
    newInput := filename readStream.
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   245
    newInput isNil ifTrue:[
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   246
	('Could not find file: "',filename,'"') errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   247
	^ self.
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   248
    ].
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   249
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   250
    [
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   251
	savedCurrentDirectory := currentDirectory.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   252
	savedInput := inputStream.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   253
	savedPrint := printFlag.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   254
	savedPrompt := prompt.
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   255
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   256
	currentDirectory := filename directory.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   257
	inputStream := newInput.
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   258
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   259
	self
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   260
	    basicReadEvalPrintLoopWithInput:newInput
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   261
	    output:outputStream
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   262
	    error:errorStream
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   263
	    compiler:compiler
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   264
	    prompt:false
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   265
	    print:false.
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   266
    ] ensure:[
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   267
	currentDirectory := savedCurrentDirectory.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   268
	inputStream := savedInput.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   269
	printFlag := savedPrint.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   270
	prompt := savedPrompt
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   271
    ].
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   272
!
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   273
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   274
cmd_set:lineStream
10255
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   275
    self cmd_setOrClear:lineStream to:true
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   276
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   277
    "Modified: / 07-12-2006 / 19:04:46 / cg"
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   278
!
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   279
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   280
cmd_setOrClear:lineStream to:aBoolean
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   281
    |what|
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   282
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   283
    lineStream skipSeparators.
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   284
    what := lineStream nextAlphaNumericWord.
16133
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   285
    what notNil ifTrue:[
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   286
	(what startsWith:'tra') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   287
	    traceFlag := aBoolean.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   288
	    ^ self.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   289
	].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   290
	(what startsWith:'tim') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   291
	    timingFlag := aBoolean.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   292
	    ^ self.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   293
	].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   294
	(what startsWith:'chunk') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   295
	    doChunkFormat := aBoolean.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   296
	    ^ self.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   297
	].
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   298
    ].
16133
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   299
    self errorStream nextPutLine:'? which flag ?'.
10255
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   300
10256
63993a2b4d15 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10255
diff changeset
   301
    "Modified: / 07-12-2006 / 19:13:34 / cg"
10255
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   302
!
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   303
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   304
cmd_show:lineStream
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   305
    |errStream what all printModule|
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   306
13865
8a42d5528cc4 changed:
Claus Gittinger <cg@exept.de>
parents: 13859
diff changeset
   307
"
8a42d5528cc4 changed:
Claus Gittinger <cg@exept.de>
parents: 13859
diff changeset
   308
 self basicNew cmd_show:'packages' readStream
8a42d5528cc4 changed:
Claus Gittinger <cg@exept.de>
parents: 13859
diff changeset
   309
"
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   310
    errStream := self errorStream.
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   311
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   312
    lineStream skipSeparators.
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   313
    what := lineStream nextAlphaNumericWord.
16133
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   314
    what notNil ifTrue:[
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   315
	(what startsWith:'var') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   316
	    Workspace notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   317
		Workspace workspaceVariables keysAndValuesDo:[:nm :h |
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   318
		    errStream nextPutAll:nm; nextPutAll:' -> '; nextPutLine:h value.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   319
		].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   320
	    ].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   321
	    ^ self.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   322
	].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   323
	(what startsWith:'proc') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   324
	    MiniDebugger basicNew showProcesses.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   325
	    ^ self.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   326
	].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   327
	(what startsWith:'mod') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   328
	    printModule :=
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   329
		[:mod |
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   330
		    errStream
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   331
			nextPutAll:'  ';
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   332
			nextPutAll:(mod package "libraryName");
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   333
			nextPutLine:' (',(mod type),')'.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   334
		].
13865
8a42d5528cc4 changed:
Claus Gittinger <cg@exept.de>
parents: 13859
diff changeset
   335
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   336
	    errStream nextPutLine:'builtIn:'.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   337
	    ((ObjectMemory binaryModuleInfo
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   338
		reject:[:m | m dynamic])
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   339
		    asSortedCollection:[:a :b | a name < b name]) do:printModule.
13865
8a42d5528cc4 changed:
Claus Gittinger <cg@exept.de>
parents: 13859
diff changeset
   340
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   341
	    errStream nextPutLine:'dynamic:'.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   342
	    ((ObjectMemory binaryModuleInfo
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   343
		select:[:m | m dynamic])
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   344
		    asSortedCollection:[:a :b | a name < b name]) do:printModule.
13865
8a42d5528cc4 changed:
Claus Gittinger <cg@exept.de>
parents: 13859
diff changeset
   345
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   346
	    ^ self.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   347
	].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   348
	(what startsWith:'mem') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   349
	    all := ObjectMemory oldSpaceUsed + ObjectMemory symSpaceUsed
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   350
					     + ObjectMemory newSpaceUsed.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   351
	    errStream
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   352
		nextPutLine:('overall: ',(all // 1024) printString,' Kb');
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   353
		nextPutLine:('in use : ',(ObjectMemory bytesUsed // 1024) printString,' Kb');
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   354
		nextPutLine:('free   : ',(ObjectMemory freeSpace // 1024) printString,' Kb');
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   355
		nextPutLine:('minorGC: ',(ObjectMemory scavengeCount) printString);
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   356
		nextPutLine:('majorGC: ',(ObjectMemory garbageCollectCount) printString).
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   357
	    ^ self.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   358
	].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   359
	(what startsWith:'flag') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   360
	    errStream
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   361
		nextPutLine:('trace :      ',traceFlag printString);
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   362
		nextPutLine:('timing:      ',timingFlag printString);
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   363
		nextPutLine:('chunkFormat: ',doChunkFormat printString).
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   364
	    ^ self.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   365
	].
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   366
    ].
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   367
16133
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   368
    errStream nextPutLine:'? show what ?'.
10255
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   369
13866
c15dce4faf10 changed:
Claus Gittinger <cg@exept.de>
parents: 13865
diff changeset
   370
    "Modified: / 07-12-2011 / 22:15:07 / cg"
10255
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   371
!
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   372
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   373
cmd_use:lineStream
16145
8687a6524d21 class: ReadEvalPrintLoop
Stefan Vogel <sv@exept.de>
parents: 16133
diff changeset
   374
    |pkg|
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   375
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   376
    lineStream skipSeparators.
16133
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   377
    pkg := lineStream upToEnd.
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   378
    pkg isNil ifTrue:[
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   379
	'? which package?' errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   380
	^ self.
16133
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   381
    ].
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   382
    pkg := pkg withoutSeparators.
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   383
    pkg isEmpty ifTrue:[
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   384
	'? which package?' errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   385
	^ self.
16133
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   386
    ].
dc573e06581e class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16119
diff changeset
   387
16145
8687a6524d21 class: ReadEvalPrintLoop
Stefan Vogel <sv@exept.de>
parents: 16133
diff changeset
   388
    [
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   389
	Smalltalk loadPackage:pkg.
16145
8687a6524d21 class: ReadEvalPrintLoop
Stefan Vogel <sv@exept.de>
parents: 16133
diff changeset
   390
    ] on:PackageLoadError do:[:ex|
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   391
	"/ allow for some shortcuts...
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   392
	(pkg includes:$:) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   393
	    self errorStream nextPutLine:('Failed to load package: "',pkg,'"').
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   394
	] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   395
	    "/ try stx standard package
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   396
	    pkg := 'stx:', pkg.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   397
	    ex restart.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   398
	].
13852
4bdc4f1dc3e3 changed: #cmd_use:
Claus Gittinger <cg@exept.de>
parents: 13768
diff changeset
   399
    ].
10255
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   400
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   401
    "Created: / 07-12-2006 / 19:07:56 / cg"
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   402
!
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   403
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   404
directive:line
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   405
    |s cmd|
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   406
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   407
    s := line readStream.
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   408
    s next. "/ skip the hash
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   409
    s skipSeparators.
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   410
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   411
    cmd := s nextAlphaNumericWord.
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   412
    cmd notNil ifTrue:[
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   413
	self
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   414
	    perform:('cmd_',cmd) asMutator with:s
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   415
	    ifNotUnderstood:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   416
		self errorStream
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   417
		    nextPutAll:'?? invalid command: ';
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   418
		    nextPutAll:cmd;
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   419
		    nextPutAll:'. Type "#help" for help.';
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   420
		    cr.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   421
	    ].
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   422
    ].
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   423
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   424
    "Created: / 07-12-2006 / 18:49:17 / cg"
10255
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   425
! !
a50472b6354a directives
Claus Gittinger <cg@exept.de>
parents: 10254
diff changeset
   426
10248
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
!ReadEvalPrintLoop methodsFor:'evaluation'!
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   429
basicReadEvalPrintLoopWithInput:input output:output error:error
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   430
    compiler:compilerClass prompt:prompt print:doPrint
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   431
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   432
    "{ Pragma: +optSpace }"
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   433
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   434
    "the core of the interpreter loop; extracted and parametrized, so it can be called recursive
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   435
     for included scripts.
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   436
     If chunkFormat is true, chunks are read.
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   437
     Otherwise, lines up to an empty line (or EOF) or a line ending in '.' are read.
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   438
     A '#' character appearing in the first column of the first line turns off chunkmode."
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   439
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   440
    [
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   441
	|lines chunk|
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   442
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   443
	prompt notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   444
	    error nextPutAll:prompt.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   445
	].
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   446
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   447
	input atEnd ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   448
	    error cr.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   449
	    ^ self.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   450
	].
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   451
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   452
	input peek == $# ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   453
	    self doChunkFormat:false.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   454
	].
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   455
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   456
	self doChunkFormat ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   457
	    input skipSeparators.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   458
	    chunk := input nextChunk.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   459
	] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   460
	    lines := OrderedCollection new.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   461
	    [
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   462
		|line|
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   463
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   464
		line := input nextLine.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   465
		line notEmptyOrNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   466
		    line = '?' ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   467
			self cmd_help:nil.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   468
			prompt notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   469
			    error nextPutAll:prompt.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   470
			].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   471
		    ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   472
			(line startsWith:'#') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   473
			    self directive:line.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   474
			    prompt notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   475
				error nextPutAll:prompt.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   476
			    ].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   477
			] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   478
			    lines add:line.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   479
			]
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   480
		    ]
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   481
		].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   482
		line notEmptyOrNil and:[(line endsWith:$.) not].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   483
	    ] whileTrue.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   484
	    chunk := lines asStringWith:Character cr.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   485
	].
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   486
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   487
	(chunk notEmptyOrNil and:[chunk withoutSeparators notEmpty]) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   488
	    "abortAll is handled, but not asked for here!!"
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   489
	    AbortAllOperationRequest handle:[:ex |
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   490
		error nextPutLine:('Evaluation aborted: ', ex description)
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   491
	    ] do:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   492
		(Error, ControlInterrupt) handle:[:ex |
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   493
		    prompt isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   494
			ex reject
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   495
		    ].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   496
		    MiniDebugger enterWithMessage:(ex errorString) mayProceed:true.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   497
		    ex mayProceed ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   498
			ex proceed.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   499
		    ].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   500
		    error nextPutLine:('Evaluation aborted: ', ex description).
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   501
		    ex return.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   502
		] do:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   503
		    |value ms us|
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   504
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   505
		    ms := Time millisecondsToRun:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   506
			us := Time microsecondsToRun:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   507
			    value := (compilerClass new
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   508
					requestor:self)
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   509
					evaluate:chunk
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   510
					compile:true.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   511
			].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   512
		    ].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   513
		    doPrint ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   514
			value printOn:output. output cr.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   515
		    ].
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   516
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   517
		    timingFlag == true ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   518
			'execution time: ' printOn:error.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   519
			ms < 1 ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   520
			    us < 1 ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   521
				'too small to measure (<1us)' printOn:error.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   522
			    ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   523
				us printOn:output. 'us' printOn:error.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   524
			    ]
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   525
			] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   526
			    ms printOn:output. 'ms' printOn:error.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   527
			].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   528
			error cr.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   529
		    ].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   530
		    Workspace notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   531
			Workspace workspaceVariableAt:'_$$' put:value.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   532
		    ].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   533
		].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   534
	    ].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   535
	].
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   536
    ] loop.
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   537
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   538
    "
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   539
     (ReadEvalPrintLoop new prompt:'>') readEvalPrintLoop
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   540
    "
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   541
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   542
    "Created: / 07-12-2006 / 17:27:21 / cg"
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   543
    "Modified: / 06-12-2011 / 15:29:03 / cg"
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   544
!
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   545
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   546
readEvalPrintLoop
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   547
    "{ Pragma: +optSpace }"
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   548
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   549
    "simple read-eval-print loop for non-graphical Minitalk.
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   550
     If the chunkFormat-argument is true, chunks are read.
16087
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   551
     Otherwise, lines up to an empty line (or EOF) are read.
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   552
     A '#' character appearing in the first column of the first line
ba981c147e6c class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16084
diff changeset
   553
     switches to chunkmode."
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   554
10628
284266d54dbe #exit only leaves the rep-loop
Claus Gittinger <cg@exept.de>
parents: 10500
diff changeset
   555
    exitAction := [^ self].
284266d54dbe #exit only leaves the rep-loop
Claus Gittinger <cg@exept.de>
parents: 10500
diff changeset
   556
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   557
    ControlInterrupt handle:[:ex |
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   558
	self errorStream nextPutLine:('Caught: ', ex description).
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   559
	ex restart.
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   560
    ] do:[
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   561
	|input output error compilerClass|
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   562
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   563
	"/ re-evaluate these in the loop, so they can be changed dynamically
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   564
	input := self inputStream.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   565
	output := self outputStream.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   566
	error := self errorStream.
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   567
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   568
	compilerClass := compiler ? Compiler ? Parser.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   569
	compilerClass isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   570
	    self errorStream nextPutLine:('oops - no Compiler class found').
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   571
	    ^ self.
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   572
	].
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   573
	self
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   574
	    basicReadEvalPrintLoopWithInput:input output:output error:error
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   575
	    compiler:compilerClass prompt:prompt print:(printFlag ? true).
10463
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   576
    ]
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   577
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   578
    "
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   579
     (ReadEvalPrintLoop new prompt:'>') readEvalPrintLoop
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   580
    "
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   581
90c8fd90d3fc oops - corrupted code
Claus Gittinger <cg@exept.de>
parents: 10462
diff changeset
   582
    "Created: / 07-12-2006 / 17:27:21 / cg"
13859
81451e09af8d changed: #readEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 13858
diff changeset
   583
    "Modified: / 06-12-2011 / 15:29:03 / cg"
10248
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   584
! !
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   585
16089
04545ee7ab04 class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16088
diff changeset
   586
!ReadEvalPrintLoop methodsFor:'queries'!
04545ee7ab04 class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16088
diff changeset
   587
04545ee7ab04 class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16088
diff changeset
   588
autoDefineVariables
04545ee7ab04 class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16088
diff changeset
   589
    "when evaluating with --eval, auto define any variables"
04545ee7ab04 class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16088
diff changeset
   590
04545ee7ab04 class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16088
diff changeset
   591
    ^ #workspace
04545ee7ab04 class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16088
diff changeset
   592
! !
04545ee7ab04 class: ReadEvalPrintLoop
Claus Gittinger <cg@exept.de>
parents: 16088
diff changeset
   593
10248
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   594
!ReadEvalPrintLoop class methodsFor:'documentation'!
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   595
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   596
version
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   597
    ^ '$Header: /cvs/stx/stx/libbasic/ReadEvalPrintLoop.st,v 1.54 2014-06-10 10:41:05 cg Exp $'
13121
e0cc829d4b4d added: #correctableError:position:to:from:
Claus Gittinger <cg@exept.de>
parents: 10635
diff changeset
   598
!
e0cc829d4b4d added: #correctableError:position:to:from:
Claus Gittinger <cg@exept.de>
parents: 10635
diff changeset
   599
e0cc829d4b4d added: #correctableError:position:to:from:
Claus Gittinger <cg@exept.de>
parents: 10635
diff changeset
   600
version_CVS
16565
Claus Gittinger <cg@exept.de>
parents: 16482
diff changeset
   601
    ^ '$Header: /cvs/stx/stx/libbasic/ReadEvalPrintLoop.st,v 1.54 2014-06-10 10:41:05 cg Exp $'
10248
c00913f343f1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   602
! !