Syntax Dokumentation

vom 15. May 2009

Nach langer Abstinenz wieder mal ein kleiner Beitrag zum Thema Dokumentation. Neulich schaute ich mir die Syntax zu SQLite an und war begeistert! Eine solch hervorragende Dokumentation habe ich schon lange nicht mehr gesehen.

Normalerweise sehen Syntax-Definitionen so aus: mySQL Select syntax

Seit ich programmiere, wird die Syntax so oder in abgeänderter Form dargestellt. Alles was in eckigen Klammern ist ist optional. Das Pipe-Symbol stellt ein "oder" dar. Die türkisen Hervorhebungen stellen Unterausdrücke dar, die nochmal separat beachtet werden müssen.

In der SQLite Dokumentation wurde der selbe Sachverhalt in einem "Flussdiagramm" bzw. einem Automaten dargestellt:

SQLite Syntax für SELECT

Welch angenehme Überraschung! Die Syntax lässt sich um einiges leichter lesen und verstehen. Wieso wird diese Darstellungsweise nicht immer verwendet? Weil es früher in ASCII unmöglich war? Oder weil es zu umständlich ist? Ne. Weil es nicht parsbar ist? Kann nicht sein, dafür gibts die BNF. Wenn mir jemand einen triftigen Grund nennen kann, bitte ich dies in den Kommentaren zu tun :)

Auch toll gemacht ist in diesem Zusammenhang ist strfriend.com. Hier werden reguläre Ausdrücke durch eine ähnliche Darstellung visualisiert. Leider unterstützt dieses Tool nur einen Bruchteil vom PCRE Quasi-Standard und man muss sich auf einfache Ausdrücke beschränken.

Und wenn wir schon beim Graphen malen sind: Wer "mal schnell" ein UML-Diagramm zeichnen möchte, aber dafür kein Zeichenwerkzeug bemühen will, kann sich mal yuml.de anschauen. Damit lassen sich über die URL Diagramme generieren!

delicious bookmark del.icio.us,


Kommentare


Till am 24. May 2009
Hi Aaron,

Bei der verwendeten Darstellung handelt es sich um eine Form die sogar explizit als Syntaxdiagramm bekannt ist. Stammt aus der theoretischen Informatik.

Ich gebe dir vollkommen recht, dass es eine wesentlich lesbarere Form der Darstellung ist als einfach nur Text. Das ganze begegnet einem zum Beispiel auch wenn man mit ANTLRWorks Lexer/Parser für eine Sprache mit einer gegebenen (aber vllt nicht schön lesbaren) Grammatik erstellt.

Da kann man dann auch schön angezeigt bekommen, was an welcher Stelle vorkommen kann/muss/darf.

lg
Till :o)

Marc am 26. May 2009
Auf der Seite war ich auch schon und war genauso überrascht :)

Aber da die Syntax ist unvollständig ist, kann man sowas leider auch nur verwenden wenn es wichtige Teile wie die meistbenutzten SQL-Operatoren gibt. Ich glaube deshalb wird das nicht öfters benutzt.

Gruß Marc

Andi am 29. May 2009
Hi Onkel Aaron ;),

hier ist Andi von IBM. Hast mich bestimmt schon erkannt :). Diese Darstellungsform wurde von Oracle übernommen. Schau dir mal die Doku von Oracle an.

http://download.oracle.com/docs/cd/B14117_01/server.101/b10759/statements_10002.htm

Oracle geht sogar noch etwas weiter und stellt die Syntax zur Verfügung.

http://download.oracle.com/docs/cd/B14117_01/server.101/b10759/img_text/subquery.htm

Finde es eine beinahe perfekte Mischung.

In diesem Sinne "leg dich wieder hin"

Beste Grüße
Andi

Andreas am 1. June 2009
Hey Aaron,

Unter http://www-cgi.uni-regensburg.de/~brf09510/syntax.html findest du eine Seite, mit der du aus einer Grammatik einen Syntaxbaum machen kannst!
Echt nicht uninteressant!

Gruß
Andreas

Aaron am 10. September 2009
Danke für die Kommentare!!

@Till: Magst mir mal deine Ausarbeitung über ANTLR aus AKSE schicken? :)

@Marc: Das stimmt. Will man die komplette Syntax in so einem Diagramm abbilden, wird es hoffnungslos unübersichtlich.

@Andi: Ja, die Mischung machts. Aber ein Bild ist trotzdem immer aussagekräftiger als ein Block Text mit tausend Klammern und Pipes. Weitermachen.

@Andreas: Danke für den Link!!

Kommentar schreiben