Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
smalltalktransform [2021/05/05 12:56] christian [Translations] |
smalltalktransform [2023/04/12 14:13] christian [Get started] |
||
---|---|---|---|
Line 4: | Line 4: | ||
Transformations are declared for each package, class and method. | Transformations are declared for each package, class and method. | ||
- | The transformations are applied some code to generate the target Smalltalk code. | + | The transformations are applied |
This is the next more general version of the [[GemstoneFileout|Gemstone Fileout]] project. | This is the next more general version of the [[GemstoneFileout|Gemstone Fileout]] project. | ||
+ | < | ||
+ | <div style=" | ||
+ | A < | ||
+ | </ | ||
+ | </ | ||
- | The only working example is the PDFtalk port from VisualWorks to Gemstone. | ||
- | It is intended to cover other dialects (Pharo, VisualAge, Smalltalk/ | + | [[StateOfThePort|State of The Port]] |
- | ===== Get startet | + | ===== Get started |
Load bundle **{Smalltalk Transform Project}** from the [[: | Load bundle **{Smalltalk Transform Project}** from the [[: | ||
- | As Example, load package [Gemstone Fileout | + | As example, you can load the bundle **{PDFtalk |
- | ===== Smalltalk | + | * [Gemstone Fileout PDFtalk] |
+ | * [Squeak Fileout PDFtalk] | ||
+ | * [VASmalltalk Fileout PDFtalk] | ||
+ | * [Pharo Fileout PDFtalk] | ||
+ | These contain the specific transformation rules for PDFtalk for different target | ||
- | While all Smalltalk | + | Read in the [[SmalltalkTransformDocumentation|Smalltalk |
- | + | ||
- | The basic class library (Object, Number, Collection, Class etc.) with standardized selectors are the same in all dialects. But each one extends the library and classes with their own ways of doing things. | + | |
- | + | ||
- | There are some cross dialect libraries like Glorp. | + | |
- | + | ||
- | The UI, at the other end, is very different in all dialects, so that porting is almost impossible. | + | |
- | + | ||
- | ==== Translations ==== | + | |
- | + | ||
- | === Methods === | + | |
- | + | ||
- | The source code is in methods which syntax may be different in the target system. | + | |
- | + | ||
- | There are 3 kinds of changes concerning methods: | + | |
- | * **Ignore** This method of the source system should not be written | + | |
- | * **Add** This method is added to the target system. The method does not exist in the source system. < | + | |
- | * **Replace** This method of the source system is replaced by the body of the target method | + | |
- | * **Rewrite** The body of the source method is transformed by a Rewrite rule | + | |
- | + | ||
- | === Classes === | + | |
- | + | ||
- | === Packages === | + | |
- | + | ||
- | ==== Rewrite Tool ==== | + | |
- | + | ||
- | The code transformations are done with the rewrite | + | |