changed the compiler to remove all leading spaces from a method name when composing a primitive identifer.
started enhancing the compiler to support the #pragma directive
This commit is contained in:
@ -187,14 +187,14 @@ extend Apex
|
||||
|
||||
method(#dual) isNil
|
||||
{
|
||||
"^self == nil."
|
||||
## ^self == nil.
|
||||
^false
|
||||
}
|
||||
|
||||
method(#dual) notNil
|
||||
{
|
||||
"^(self == nil) not"
|
||||
"^self ~= nil."
|
||||
## ^(self == nil) not
|
||||
## ^self ~= nil.
|
||||
^true.
|
||||
}
|
||||
|
||||
|
@ -115,21 +115,21 @@ class(#pointer,#final,#limited) BlockContext(Context)
|
||||
|
||||
method fork
|
||||
{
|
||||
"crate a new process in the runnable state"
|
||||
## crate a new process in the runnable state
|
||||
^self newProcess resume.
|
||||
}
|
||||
|
||||
method newProcess
|
||||
{
|
||||
"create a new process in the suspended state"
|
||||
## create a new process in the suspended state
|
||||
<primitive: #_block_new_process>
|
||||
self primitiveFailed.
|
||||
}
|
||||
|
||||
method newProcessWith: anArray
|
||||
{
|
||||
"create a new process in the suspended state passing the elements
|
||||
of anArray as block arguments"
|
||||
## create a new process in the suspended state passing the elements
|
||||
## of anArray as block arguments
|
||||
<primitive: #_block_new_process>
|
||||
self primitiveFailed.
|
||||
}
|
||||
@ -268,7 +268,7 @@ class(#pointer,#final,#limited) BlockContext(Context)
|
||||
* --------------------------------------------------
|
||||
| pc |
|
||||
pc := thisContext pcplus1.
|
||||
(self value) ifTrue: [ ^nil "^self" ].
|
||||
(self value) ifTrue: [ ^nil ]. ## ^self
|
||||
aBlock value.
|
||||
thisContext goto: pc.
|
||||
* -------------------------------------------------- *)
|
||||
@ -293,7 +293,7 @@ class(#pointer,#final,#limited) BlockContext(Context)
|
||||
* --------------------------------------------------
|
||||
| pc |
|
||||
pc := thisContext pcplus1.
|
||||
(self value) ifTrue: [ ^nil "^self" ].
|
||||
(self value) ifTrue: [ ^nil ]. ## ^self
|
||||
thisContext goto: pc.
|
||||
* -------------------------------------------------- *)
|
||||
while ((self value) == false) { }.
|
||||
|
@ -80,7 +80,7 @@ while (ctx notNil)
|
||||
System logNl: '== END OF BACKTRACE =='.
|
||||
|
||||
thisContext unwindTo: (thisProcess initialContext) return: nil.
|
||||
('### EXCEPTION NOT HANDLED #### ' & self class name & ' - ' & self messageText) dump.
|
||||
('### EXCEPTION NOT HANDLED(Exception) #### ' & self class name & ' - ' & self messageText) dump.
|
||||
## TODO: debug the current process???? "
|
||||
|
||||
##Processor activeProcess terminate.
|
||||
|
@ -210,26 +210,10 @@ method(#class,#abstract) xxx. => method(#class) xxx { self subclassResponsibilit
|
||||
method(#class) new: size { self messageProhibited: #new: }
|
||||
*)
|
||||
|
||||
method(#primitive) _addSemaphore: sem.
|
||||
method(#primitive) _removeSemaphore: sem.
|
||||
method(#primitive) addSemaphore: sem.
|
||||
method(#primitive) removeSemaphore: sem.
|
||||
method(#primitive) _wait.
|
||||
|
||||
method addSemaphore: sem
|
||||
{
|
||||
| x |
|
||||
x := self _addSemaphore: sem.
|
||||
if (x isError) { Exception signal: ('Cannot add a semaphore - ' & x asString) }.
|
||||
^x
|
||||
}
|
||||
|
||||
method removeSemaphore: sem
|
||||
{
|
||||
| x |
|
||||
x := self _removeSemaphore: sem.
|
||||
if (x isError) { Exception signal: ('Cannot remove a semaphore - ' & x asString) }.
|
||||
^x
|
||||
}
|
||||
|
||||
method wait
|
||||
{
|
||||
| x |
|
||||
|
@ -110,6 +110,7 @@ class MyObject(Object)
|
||||
'wrong module name'
|
||||
'failed to import module'
|
||||
'#include error'
|
||||
'wrong pragma name'
|
||||
'wrong namespace name'
|
||||
'wrong pool dictionary name'
|
||||
'duplicate pool dictionary name'
|
||||
|
@ -155,8 +155,8 @@ class MyObject(TestObject)
|
||||
|
||||
## ---------------------------------------------------------------------------
|
||||
|
||||
" this sample demonstrates what happens when a block context returns to the origin's caller
|
||||
after the caller has already returned. "
|
||||
## this sample demonstrates what happens when a block context returns to the origin's caller
|
||||
## after the caller has already returned.
|
||||
|
||||
method(#class) xxxx
|
||||
{
|
||||
@ -180,7 +180,7 @@ class MyObject(TestObject)
|
||||
method(#class) main66
|
||||
{
|
||||
self yyyy.
|
||||
t2 := t2 value. "can t2 return? it should return somewhere into the method context of yyy. but it has already terminated"
|
||||
t2 := t2 value. ## can t2 return? it should return somewhere into the method context of yyy. but it has already terminated
|
||||
t2 dump.
|
||||
}
|
||||
|
||||
@ -190,7 +190,7 @@ class MyObject(TestObject)
|
||||
t1 := 1.
|
||||
self xxxx.
|
||||
|
||||
t2 := t2 value. "can t2 return? it should return somewhere into the method context of yyy. but it has already terminated"
|
||||
t2 := t2 value. ## can t2 return? it should return somewhere into the method context of yyy. but it has already terminated
|
||||
t2 dump.
|
||||
}
|
||||
## ----------------------------------------------------------------------
|
||||
@ -215,7 +215,7 @@ class MyObject(TestObject)
|
||||
(#[3 2 1] at: 3) dump.
|
||||
|
||||
|
||||
## thisContext value. "the message value must be unresolvable as thisContext is a method context"
|
||||
## thisContext value. ## the message value must be unresolvable as thisContext is a method context
|
||||
## [thisContext value] value.
|
||||
'-------------------------' dump.
|
||||
b := 0.
|
||||
@ -354,7 +354,9 @@ PROCESS TESTING
|
||||
|
||||
(2r1111111111111111111111111111111111111111111111111111111111111111 printStringRadix:2) dump.
|
||||
|
||||
"(16rF0FFFF bitOr: 16r111111) dump.
|
||||
(* -----------------------
|
||||
|
||||
(16rF0FFFF bitOr: 16r111111) dump.
|
||||
|
||||
(16r11 bitOr: 16r20000000000000000000000000000000FFFFFFFFFFFFFFFF11111100000000000000000001) dump.
|
||||
((16r11 bitOr: 16r20000000000000000000000000000000FFFFFFFFFFFFFFFF11111100000000000000000001) bitOr: 16r1100) dump.
|
||||
@ -365,7 +367,8 @@ PROCESS TESTING
|
||||
((2r11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 bitXor: 2r11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111) printStringRadix: 2) dump.
|
||||
|
||||
((2r10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 bitAnd: 2r01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010) printStringRadix: 2) dump.
|
||||
"
|
||||
|
||||
--------------------- *)
|
||||
|
||||
(16rFFFFFFFFFFFFFFFF bitOr: 16rFFFFFFFFFFFFFFFFFFFFFFFF) dump.
|
||||
(-16rFFFFFFFFFFFFFFFF bitOr: 16rFFFFFFFFFFFFFFFFFFFFFFFF) dump.
|
||||
|
Reference in New Issue
Block a user