mikrocontroller.net

Forum: Projekte & Code Femto - Portabler Interpreter mit Programmierumgebung für ATMega(644)


Autor: Simeon Maxein (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Rahmen meiner Studienarbeit entwickle ich einen Interpreter für eine 
Javascript-ähnliche Sprache, zusammen mit einem kleinen Editor für den 
ATMega644. Das (vorläufige) Ergebnis stelle ich jetzt allen 
Interessierten als Open Source-Projekt zur Verfügung. Aktuell fehlt 
leider noch einiges an Dokumentation (insbesondere was die 
interpretierte Sprache und die von mir verwendete ATMega-Platine 
angeht), und man kann sicher noch viel verbessern, aber es sollte 
reichen um einen ersten Eindruck zu bekommen.

Features:
- Geringer RAM-Bedarf
Der Interpreter arbeitet aus C-Sicht ohne Rekursion, so dass der 
Speicherbedarf für den C-Stack beschränkt bleibt. Der interpretierte 
Programmcode kann in kleinen Blöcken von einem externen 
Speichermechanismus bereitgestellt werden.

- Einfach portierbar
Der Kern des Interpreters ist in plattformunabhängigem C geschrieben.

- Einfach erweiterbar
Zusätzliche Funktionen lassen sich ohne großen Aufwand in die Sprache 
integrieren.

- "Moderne" Sprachsyntax
Funktionen mit lokalen Variablen, for-, while- und do- Schleifen, 
if-else-Bedingungen und Ausdrücke ähnlich wie man sie aus C oder 
Javascript gewohnt ist.

Der ATMega-spezifische Texteditor erlaubt Speichern und Laden von einem 
Programm ins/vom EEPROM, und benutzt PS/2-Tastatur zur Eingabe und VGA 
zur Bildschirmausgabe. Diese beiden Module bauen auf Vorarbeiten aus dem 
Seminar Einchipcomputer sowie der Vorlesung Technische Informatik C von 
Dr. Merten Joost auf.

Aktuell ist das Projekt noch nicht sehr benutzerfreundlich und 
vermutlich nur für erfahrenere Entwickler von Interesse. 
Verbesserungsvorschläge - besonders in Form von Feature-Branches - sind 
sehr willkommen.

Projekt-URL: https://launchpad.net/femto

Autor: Rene B. (themason) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab mir das projekt mal angeschaut. respekt. sieht echt gut aus :-)
so einen interpreter wollt ich mir immer schonmal selbst 
zusammengeklöppelt haben. na ja. vllt gibt mein parser das ja demnächst 
auch her ^^. jedenfalls verlier ich solangsam die scheu davor auf einem 
großen avr auch mal nen malloc zu verwenden :-)

aber eine frage hab ich mal zum code. ich habe an einer stelle gesehen 
das du sowas machst :

while (funca (), func b ())
{
 ...
}

ich verstehe nicht ganz was der compiler daraus machen soll bzw was das 
genau ist. ich kenne nur "while (cond) { ... }", aber "while (cond1, 
cond2) { ... }".
ist das eine "spezialität" von C99 ?! wie würde sich die zweite 
condition auf das while auswirken ? wird das ergebnis ver-odert ?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Kommaoperator führ erst das vor dem Komma aus, ein
evtl. Ergebnis (hier: Rückgabewert) wird wegegworfen,
dann wird das nach dem Komma ausgeführt und dessen
Ergebnis wird zum Ergebnis des ganze Ausdrucks.

Also entspricht:
    irgendwas = funca(), funcb();
dem Folgenden:
    funca();
    irgendwas = funcb();
Nur halt formal in einer Anweisung, daher auch als
while-Bedingung geeignet.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS: Mehrere Parameter beim Funktionsaufruf haben nichts mit
dem Kommaoperator zu tun.
Es sieht nur zufällig genauso aus.

Autor: Rene B. (themason) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>PS: Mehrere Parameter beim Funktionsaufruf haben nichts mit
>dem Kommaoperator zu tun.

das ist mir schon klar. da bezieht sich das komma ja auf den 
funktionsaufruf selbst (also die übergebenen parameter). ich wusste nur 
nicht wie sich das mit dem :

irgendwas = funca(), funcb();

->

funca();
irgendwas = funcb();

verhält. und wieder was dazugelernt :-)

danke.

Autor: Simeon Maxein (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal.

Inzwischen ist einiges an Zeit vergangen, und seit einer ganzen Weile 
ist auch die Studienarbeit (und damit die Dokumentation) fertig. Leider 
kümmere ich mich erst jetzt darum, das auch mal auf der Projektseite 
(https://launchpad.net/femto) und auch hier kund zu tun.

Am Interpreter hat sich seit dem Original-Post noch einiges verbessert. 
Jetzt ist es z.B. auch zulässig, Variablen sofort bei der Deklaration 
einen Wert zuzuweisen. Außerdem gibt es jetzt Zeilenkommentare (//), und 
das Verbot von geschweiften Klammern in Stringliteralen wurde entfernt 
(die Funktionen zum Erkennen von Blockgrenzen sind jetzt etwas 
intelligenter.)

Viel Spaß beim Experimentieren damit. Ich würde mich freuen, von Euren 
Erfahrungen zu hören.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.