Multiple changes:

- Add the book and a few first pages
- Add the code generator
This commit is contained in:
2022-04-17 19:48:45 +02:00
parent 0469c6dbdf
commit 199758d97d
47 changed files with 5143 additions and 41 deletions

View File

@@ -0,0 +1,53 @@
Class {
#name : #CarpNamedFunction,
#superclass : #CarpBinding,
#instVars : [
'arguments',
'body'
],
#category : #'Carp-IDE'
}
{ #category : #'instance creation' }
CarpNamedFunction class >> named: aString withArguments: aCollection andBody: anExpression [
^ self new
name: aString;
arguments: aCollection;
body: anExpression
]
{ #category : #accessing }
CarpNamedFunction >> addArgument: anArgument [
arguments add: anArgument
]
{ #category : #accessing }
CarpNamedFunction >> arguments: aCollection [
arguments := aCollection
]
{ #category : #accessing }
CarpNamedFunction >> body [
^ body
]
{ #category : #accessing }
CarpNamedFunction >> body: anExpression [
body := anExpression
]
{ #category : #initialization }
CarpNamedFunction >> initialize [
arguments := OrderedCollection new
]
{ #category : #converting }
CarpNamedFunction >> toCarp [
^ String streamContents: [ :aStream |
aStream << '(' << self bindingName << ' ' << self name toCarp
<< ' ['.
arguments do: [ :anArgument | aStream << anArgument toCarp << ' ' ].
aStream << '] ' << self body toCarp << ')' ]
]