Home-Produkte-Testarea-Kontakt-Datenschutz-Aktualisiert: 03-Jul-2009
< Voriger Tag   Nächster Tag >

Freitag, 03. Juli 2009

Lx0: Prototyp -- for und procedure

Die for-Schleife und procedure sind im Prototyp der Lx0-Programmiersprache dazugekommen.

Die for-Schleife war einfach und ließ sich direkt implementieren. Die Prozeduren hatte ich als erstes ohne Parameter implementiert, dies ging ebenfalls problemlos -- ist von der Verwaltung aber noch nicht schön gelöst. Im Moment werden sie im program scope gesammelt. Das Hinzufügen der Parameter war dann umständlicher.

Hatte reichlich lange und mehrere Blicke in den Mantra-Quelltext gebraucht, bis die Klammern und Pluszeichen dann irgendwann richtig im Treewalker verteilt waren:

procedureDecl
    : ^('procedure' nameBegin=PROCNAME
	(^(FORMPARS pars+=formalParameter+))?
        block nameEnd=PROCNAME)

formalParameter
    : ^(FORMPAR type VARNAME)
      -> formalParameter(type={$type.st},varname={$VARNAME.text.substring(1)})
    ;

Die pars+=formalParameter-Schreibweise sorgt dafür, dass ANTLR 3 von sich aus eine Liste generiert, das findet sich dann natürlich auch im generierten Treewalker.java-Quelltext wieder:

public final TreeWalker.procedureDecl_return procedureDecl() throws RecognitionException {
[...]
        CommonTree nameEnd=null;
        List list_pars=null;

Als nächstes ist die Prüfung der Parameteranzahl und Typen dran.

Bekannte Fehler

Da für die Prozeduren noch keine Symboltabellen aufgebaut werden, fehlen für Printbefehle wie print $a die Variablennamen im vom Lx0-Compiler generierten C-Quelltext.

Quelltext

Der komplette Lx0-Quelltext steht in Subversion.

[Direktlink]

< Voriger Tag   Nächster Tag >

  RSS V0.91

<Juli 2009 >
  0102030405
06070809101112
13141516171819
20212223242526
2728293031  

Home-Produkte-Testarea-Kontakt-Datenschutz-Aktualisiert: 03-Jul-2009
(C) 2000-2018 by Sven Drieling