ALG: Logo2Java

Im Fach Allgemeine Informatik an der HTI Bern hatten wir als Aufgabe, eine Logo2Java-Parser zu bauen. Dazu solle mit dem Compiler Compiler (kein Schreibfehler!) JavaCC aus einem Logo- ein Java-Programm erstellt werden.
Als Ausgangslage haben wir folgende (vereinfachte) Definition der Sprache Logo in EBNF-Form:

  1. Program    = “LOGO” Identifier { Subroutine } { Statement } “END”
  2.  
  3. Subroutine = “TO” Identifier { Parameter } { Statement } “END”
  4.  
  5. Statement  = “CS” | “PD” | “PU” | “HT” | “ST”
  6.            | “FD” NExpr | “BK” NExpr | “LT” NExpr | “RT” NExpr
  7.            | “REPEAT” NExpr “[” { Statement } “]”
  8.            | “IF” BExpr “[” { Statement } “]”
  9.            | “IFELSE” BExpr “[” { Statement } “]” “[” { Statement } “]”
  10.            | Identifier { NExpr }
  11.  
  12. NExpr      = NTerm { ( “+” | “-” )  NTerm }
  13.  
  14. NTerm      = NFactor { ( “*” | “/” ) NFactor }
  15.  
  16. NFactor    = “-” ( Number | REPCOUNT | Parameter | “(” NExpr “)” ) |
  17.              Number | REPCOUNT | Parameter | “(” NExpr “)”
  18.  
  19. BExpr      = BTerm { “OR” BTerm }
  20.  
  21. BTerm      = BFactor { “AND” BFactor }
  22.  
  23. BFactor    = “TRUE” | “FALSE” | “NOT” “(” BExpr “)”
  24.            | NExpr ( “==” | “!=” | “< “ | “>” | “< =” | “>=” )  NExpr
  25.  
  26. Comments start with “#” with scope until the newline
  27.  
  28. Numbers are real numbers
  29.  
  30. Identifiers start with a letter followed by letters or digits
  31.  
  32. Parameters are “:” followed by Identifier
  33.  
  34. Identifiers, parameters, keywords in uppercase only

Hier ein besonders schönes Resultat eines Logo-Programmes:
SnowFlakeScreenshop

Hier unsere Beschreibung
Dokumentation (PDF)
Dokumentation (OpenOffice 2.0)

Download: Logo.jj Version 1.0, Build 20060215