Benutzer-Werkzeuge

Webseiten-Werkzeuge


Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Nächste Überarbeitung
Vorherige Überarbeitung
daedalus:ebnf [2015/08/18 20:15]
127.0.0.1 Externe Bearbeitung
daedalus:ebnf [2016/12/31 09:11] (aktuell)
milky-way update formatierung
Zeile 1: Zeile 1:
-== Syntaxnotation ==+====== Syntaxnotation ======
 Die im folgenden verwendete Notation zur Beschreibung der Syntax nennt sich EBNF-Notation (Erweiterte Backus-Naur-Form). Es wurden die Regeln verwendet, wie sie im unten genannten Wikipedia-Artikel aufgeführt werden. Die im folgenden verwendete Notation zur Beschreibung der Syntax nennt sich EBNF-Notation (Erweiterte Backus-Naur-Form). Es wurden die Regeln verwendet, wie sie im unten genannten Wikipedia-Artikel aufgeführt werden.
  
 Weitergehende Informationen zu EBNF findet man hier: Weitergehende Informationen zu EBNF findet man hier:
-*http://de.wikipedia.org/wiki/EBNF +[[http://de.wikipedia.org/wiki/EBNF]] 
-*http://www.cl.cam.ac.uk/~mgk25/iso-14977.pdf+[[http://www.cl.cam.ac.uk/~mgk25/iso-14977.pdf]]
  
 Die folgende Grammatik ist höchstwahrscheinlich nicht vollständig. Die folgende Grammatik ist höchstwahrscheinlich nicht vollständig.
-Edit: Ich (Lehona), habe eine neue Version hochgeladen, die zu großen Teilen völlig neu geschrieben wurde und Daedalus wesentlich passender beschreibt, in der alten Version gab es schrecklick viele Unstimmigkeiten. Die Notation ist damit formal nicht ganz korrekt, ich habe mich eher an der boost::spirit-Notation orientiert(der Stern für Wiederholung ist z.B. vor dem Ausdruck anstatt nach dem Ausdruck), aber eigentlich kompatibel. +Edit: Ich (Lehona), habe eine neue Version hochgeladen, die zu großen Teilen völlig neu geschrieben wurde und Daedalus wesentlich passender beschreibt, in der alten Version gab es schrecklich viele Unstimmigkeiten. Die Notation ist damit formal nicht ganz korrekt, ich habe mich eher an der boost::spirit-Notation orientiert(der Stern für Wiederholung ist z.B. vor dem Ausdruck anstatt nach dem Ausdruck), aber eigentlich kompatibel.
- +
-== Schlüsselwörter ==+
  
 +===== Schlüsselwörter =====
 +<code>
 class       const       else        float      func         if class       const       else        float      func         if
  
Zeile 16: Zeile 16:
  
 string      this        var         void        string      this        var         void       
 +</code>
  
  
- +===== Lexikalik ===== 
-== Lexikalik == +<code>
  identifier = (letter|"_" *( nondigit | digit );  identifier = (letter|"_" *( nondigit | digit );
  
Zeile 41: Zeile 41:
  
  float =  ["+" | "-"] (+digit '.' *digit | *digit '.' +digit | +digit);  float =  ["+" | "-"] (+digit '.' *digit | *digit '.' +digit | +digit);
-  +</code>
- +
-== [[Anchoer q4]]Ausdrücke ==+
  
 +===== Ausdrücke =====
 +<code>
  bool_op = "||" | "&&" ;  bool_op = "||" | "&&" ;
  
Zeile 72: Zeile 72:
  
  prim_expr =  *un_op (identifier["."identifier] | integer | call_statement) ;  prim_expr =  *un_op (identifier["."identifier] | integer | call_statement) ;
-   +</code> 
-==  Anweisungen == +=====  Anweisungen ===== 
 +<code>
  statement_list = *(statement ";") ;  statement_list = *(statement ";") ;
  
Zeile 90: Zeile 90:
  
  call_statement = call_exp ";" ;  call_statement = call_exp ";" ;
 +</code>
  
- +=====  Deklarationen ===== 
-==  Deklarationen == +<code>
  declaration_list = declaration *("," declaration) ;  declaration_list = declaration *("," declaration) ;
  
Zeile 115: Zeile 115:
  
  function_decl = "func" identifier "(" [declaration_list] ")" statement_block ;  function_decl = "func" identifier "(" [declaration_list] ")" statement_block ;
 +</code>
daedalus/ebnf.1439928935.txt.gz · Zuletzt geändert: 2016/12/31 09:11 (Externe Bearbeitung)