Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
089a6993fb |
62
docs-en/README-EN.md
Normal file
62
docs-en/README-EN.md
Normal file
@ -0,0 +1,62 @@
|
||||
documentation? does not exist.
|
||||
|
||||
organization of the infoblock:
|
||||
1. accesslevel
|
||||
2. name
|
||||
3. clearcache
|
||||
4. cache name
|
||||
|
||||
here is the text that i used for the draft. rather outdated:
|
||||
|
||||
Fixed program memory
|
||||
=====================
|
||||
|
||||
For the time being, simply on the hard drive in a directory.
|
||||
|
||||
Fixed data storage
|
||||
==================
|
||||
Not at all, later maybe hard disk, or mysql, or whatever
|
||||
always.
|
||||
|
||||
|
||||
Data memory
|
||||
=====================
|
||||
Doubly linked list, each element can also have a name.
|
||||
Access either by push / pop or shift / unshift, using a number as with
|
||||
an array or by its name like a hash.
|
||||
However, it is also possible to access it directly via a pointer. pointer
|
||||
however, cannot be created directly by the user, only by
|
||||
correspondingly privileged programs.
|
||||
|
||||
Diese Speicherstruktur nenne ich "vector".
|
||||
|
||||
Datentypen:
|
||||
Nach Außen hin sollen nur wenige verschiedene Datentypen sichtbar sein:
|
||||
- Wert (integer, string, was auch immer)
|
||||
- Vector
|
||||
|
||||
Wert wird intern in mehrere subtypen unterteilt, die jedoch automatisch
|
||||
bei Bedarf konvertiert werden:
|
||||
- int
|
||||
- float
|
||||
- string, bzw. pointer auf string
|
||||
- pointer auf Elemente eines Vektors
|
||||
|
||||
Aus technischer Sicht gibt es nach Außen hin eigentlich auch nicht die
|
||||
Unterscheidung zwischen Wert und vector. Auch hier kann und wird bei Bedarf
|
||||
eine automatische Konvertierung vorgenommen. Im Normalfall wird jedoch der
|
||||
Anwender dies nicht tun, und in der Dokumentation wird auch immer ein klarer
|
||||
Unterschied zwischen normalen Werten und Vektoren gemacht.
|
||||
|
||||
Ein Sonderfall ist der Pointer auf Elemente eines Vektors: Weder kann von
|
||||
einem Wert in diesen Typ konvertiert werden, noch anders herum (bzw. doch,
|
||||
aber dann käme nur ein String "pointer" oder 0 bei heraus).
|
||||
|
||||
Die einzelnen Elemente eines Vektors werden in einem union gespeichert. Der
|
||||
Union enthält die verschiedenen möglichen Ausprägungen der Werte, also int,
|
||||
float, und pointer. Zudem gibt es ein Feld, in dem gespeichert wird, welche
|
||||
Ausprägung gerade "aktiv" ist.
|
||||
|
||||
Ein zusätzlicher Typ, den man später noch hinzufügen könnte wäre "array".
|
||||
Dieser Typ würde sich zum Speichern größerer Datenmengen eignen, da er
|
||||
gegenüber einem Vektor keinen Overhead pro Element hätte.
|
100
docs-en/outline.txt
Normal file
100
docs-en/outline.txt
Normal file
@ -0,0 +1,100 @@
|
||||
Fixed program memory
|
||||
=====================
|
||||
For the time being, simply on the hard drive in a directory.
|
||||
|
||||
|
||||
Fixed data storage
|
||||
==================
|
||||
Not at all, later maybe hard disk, or mysql, or whatever
|
||||
always.
|
||||
|
||||
|
||||
|
||||
Data memory
|
||||
=====================
|
||||
Doubly linked list, each element can also have a name.
|
||||
Access either by push / pop or shift / unshift, using a number as with
|
||||
an array or by name like a hash.
|
||||
However, it is also possible to access it directly via a pointer. pointer
|
||||
however, cannot be created directly by the user, only by
|
||||
correspondingly privileged programs.
|
||||
|
||||
In the first draft, you would have items that can be accessed by number or name
|
||||
accessed by naive search. You can do one later
|
||||
Put an index or something on it.
|
||||
|
||||
I call this memory structure "vector".
|
||||
|
||||
Data types:
|
||||
Only a few different data types should be visible to the outside:
|
||||
- value (integer, string, whatever)
|
||||
- Vector
|
||||
|
||||
Value is divided internally into several subtypes, but these are automatically
|
||||
converted if necessary:
|
||||
- int
|
||||
- float
|
||||
- string, or pointer to string
|
||||
- pointer to elements of a vector
|
||||
|
||||
From a technical point of view, there is actually no such thing on the outside
|
||||
Differentiation between value and vector. Here, too, can and will if necessary
|
||||
made an automatic conversion. Normally, however, the
|
||||
Users don't do this, and the documentation is getting clearer too
|
||||
Difference made between normal values and vectors.
|
||||
|
||||
A special case is the pointer to elements of a vector: Neither can from
|
||||
a value can be converted into this type, the other way around (or
|
||||
but then only a string "pointer" or 0 would come out).
|
||||
|
||||
The individual elements of a vector are saved in a union. Of the
|
||||
Union contains the various possible expressions of the values, i.e. int,
|
||||
float, and pointer. There is also a field in which it is saved which
|
||||
Expression is currently "active".
|
||||
|
||||
An additional type that could be added later would be "array".
|
||||
This type would be suitable for storing larger amounts of data because it
|
||||
would have no overhead per element compared to a vector.
|
||||
|
||||
Program memory
|
||||
========================
|
||||
The program memory is nothing more than normal data memory. this
|
||||
makes it possible to write compiler extensions in botforth yourself.
|
||||
|
||||
|
||||
minibotforth
|
||||
============
|
||||
The following commands must be implemented:
|
||||
- swap
|
||||
- +
|
||||
...
|
||||
|
||||
minibotforth should be so extremely simple that you might find it later
|
||||
can even omit to compile directly in machine language.
|
||||
|
||||
Compiler from botforth to minibotforth
|
||||
=========================================
|
||||
|
||||
1st step: lexical analysis, i.e. recognizing the individual
|
||||
keywords etc.
|
||||
Here it is recognized what a command is, but not yet whether the command
|
||||
is available internally or externally. Each command is called a node of type
|
||||
BF_TYPE_C_TEXT saved, with the command name in plain text as a string
|
||||
is filed.
|
||||
|
||||
2nd step: compiler. Here botforth is changed to minibotforth. Even
|
||||
however, command names are stored here as BF_TYPE_C_TEXT.
|
||||
|
||||
3. Execution: Only during the program execution, i.e. when we are already doing it
|
||||
are no longer in compiler mode, commands of the type
|
||||
BF_TYPE_C_TEXT, as soon as they are to be executed, in BF_TYPE_C_INT or
|
||||
BF_TYPE_C_EXT converted.
|
||||
|
||||
This serves to keep the compiler expandable by the user. He can do so
|
||||
easily insert commands without having to play around with pointers etc. Consequently
|
||||
no security hole is created either. From the perspective of a user who
|
||||
the compiler by programming compile-time behavior of commands
|
||||
want to expand, commands are to be handled like strings.
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user