Language without a name
Michael Feathers <[email protected]> Thu, 16 Jun 2005 21:45:53 -0400
| Newsgroups | gmane.comp.programming.emergent-design |
|---|---|
| Message-ID | <[email protected]> |
Here's a chance to talk about something emergent.. I like languages.
For fun, I've been writing an interpreter for a new one. It is sort of
a prototype-based mix of Smalltalk and Python syntax. I've had a
fascination with prototype-based languages ever since I read Brian
Foote's Prototype Pattern (maybe before) and typed in his Ego interpreter.
Right now, I have a tokenizer that is indentation aware and I'm building
up recognizers for the phrase structure. I'm doing it test-first and I
don't have much of a sense of what the architecture of the interpreter
will be, but it seems to be coming along fine. If anyone wants to see
the code, feel free to ask. I don't plan on making it a very useful
language. The world is littered with those already ;)
I've been using the following example code as a guide while I work; it's
code I expect the interpreter to accept.
false ifTrue: aBlock
pass
false ifFalse: aBlock
aBlock value
true ifTrue: aBlock
aBlock value
true ifFalse: aBlock
pass
test tests := list clone
test setUp
pass
test tearDown
pass
self runTest
self should: false
test should: aBool
aBool ifFalse:
self hurl: "bad things"
test run: aResult
self do:
self setUp
self runTest
self tearDown
ifUnable:
e | aResult addMessage: e
divTest := test clone
divTest runTest: aResult
self should: ((10 / 2) = 5)
testSuite add: test
self tests add: test
testSuite run: aResult
self tests do:
aTest | aTest run: aResult
object slots
self _
object clone
result | self slots forEach:
slot | result slots add: slot
result
Michael Feathers
>
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/emergentdesign/
<*> To unsubscribe from this group, send an email to:
[email protected]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/