# sed-Script zum Konvertieren von JANA in HTML mit Syntax highlight. # z.B. sed -n -f jana2html.sed blabla.jana >> blabla.html # # Hinweis: Funktioniert NICHT zuverlässig in Zeilen, die Strings enthalten. # # Der generierte Output muss noch in
Tags eingeschlossen werden.
#
# Copyright (C) 2007 by Wiesner Thomas
#
# DISCLAIMER:
# Selbstverständlich bin ich nicht schuld, wenn das script irgendwas an einem
# Jana-Programm ruiniert. Oder sonst was löscht/kaputt macht.
# V0.2
# In/Out... Parameter Pfeile, welche ich normalerweise händisch einfüge,
# müssen hier zuerst durch HTML-Neutrale Zeichenketten ersetzt werden,
# sonst wird später das Ampersand etc. falsch erstzt.
s/\↓/§d§/g;
s/\↑/§u§/g;
s/\↔/§h§/g;
s/\↕/§v§/g;
# Evtl. schon in HTML-Form vorliegende Umlaute müssen temporär zurücküberstzt
# werden. (Wegen dem Ampersand.)
s/\ü/u/g;
s/\ö/ö/g;
s/\ä/ä/g;
s/\Ü/Ü/g;
s/\Ö/Ö/g;
s/\Ä/Ä/g;
s/\>/>/g;
s/\</ HTML
s/&/\&/g;
s/ä/\ä/g;
s/Ä/\Ä/g;
s/ü/\ü/g;
s/Ü/\Ü/g;
s/ö/\ö/g;
s/Ö/\Ö/g;
s/ß/\ß/g;
s/"/\"/g;
s/\</g;
s/>/\>/g;
# Kommentare bekommen eine andere Farbe.
# Alle '"', die wir einfügen, werden zuerst als §q§ eingefügt und erst ganz
# zum Schluss ersetzt, denn sonst können wir die '"' der Eingabedatei
# nicht von unseren unterscheiden.
# Clear branch buffer.
t dummy
: dummy
s/\/\//\\/\//;
t InsTagEnd
b NoTagEnd
: InsTagEnd
s/$/\<\/FONT\>/;
: NoTagEnd
# Hier landen wir, wenn die Zeile kein Kommentar war und keine Strings enthält.
# Datentypen-highlight:
s/int[[:space:]][[:space:]]*/\\int \<\/FONT\>\<\/B\>/g;
s/short[[:space:]][[:space:]]*/\\short \<\/FONT\>\<\/B\>/g;
s/float[[:space:]][[:space:]]*/\\float \<\/FONT\>\<\/B\>/g;
s/double[[:space:]][[:space:]]*/\\double \<\/FONT\>\<\/B\>/g;
s/String[[:space:]][[:space:]]*/\\String \<\/FONT\>\<\/B\>/g;
s/boolean[[:space:]][[:space:]]*/\\boolean \<\/FONT\>\<\/B\>/g;
s/static[[:space:]][[:space:]]*/\\static \<\/FONT\>\<\/B\>/g;
s/final[[:space:]][[:space:]]*/\\final \<\/FONT\>\<\/B\>/g;
# Kontrollstrukturen highlight:
s/else[[:space:]][[:space:]]*if(/\else if\<\/B\>(/;
s/if(/\if\<\/B\>(/;
s/else[[:space:]]*{/\else \<\/B\>{/;
s/while(/\while\<\/B\>(/;
s/for(/\for\<\/B\>(/;
s/return/\return\<\/B\>/;
s/switch(/\switch\<\/B\>(/;
s/case/\case\<\/B\>/;
# Zum Schluss noch ein besonderes Leckerli: Wir Parsen auf Fehler,
# die man als C/C++/Java Programmierer gerne macht und weisen darauf hin.
s/++/\++ not allowed in Jana\<\/FONT\>/g;
s/--/\-- not allowed in Jana\<\/FONT\>/g;
s/-=/\-= not allowed in Jana\<\/FONT\>/g;
s/+=/\+= not allowed in Jana\<\/FONT\>/g;
s/\*=/\\*= not allowed in Jana\<\/FONT\>/g;
s/\/=/\\/= not allowed in Jana\<\/FONT\>/g;
s/\%=/\\%= not allowed in Jana\<\/FONT\>/g;
# Alle §q§ durch " ersetzen. Das sind die ", die wir eingfügt haben.
s/\§q§/\"/g;
s/§d§/\↓/g;
s/§u§/\↑/g;
s/§h§/\↔/g;
s/§v§/\↕/g;
#$a
Jana syntax highlight generated by jana2html.sed
# Zeile ausgeben.
p;