From 71f873b527769fcead563c304ffd4ee059c9f4ad Mon Sep 17 00:00:00 2001 From: Malte Schmitz Date: Sat, 26 Nov 2016 00:48:13 +0100 Subject: [PATCH] Start documenting with docco --- pom.xml | 27 +++++++++++++++++++++++++++ src/main/java/parser/Parser.java | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f3eccf3..761b6c9 100644 --- a/pom.xml +++ b/pom.xml @@ -12,6 +12,20 @@ UTF-8 + + + atlassian-public + https://maven.atlassian.com/content/groups/public/ + + fail + true + + + fail + + + + @@ -22,6 +36,19 @@ 1.6 + + com.atlassian.docco + atlassian-docco-maven + 1.0-beta4 + + + package + + docco + + + + diff --git a/src/main/java/parser/Parser.java b/src/main/java/parser/Parser.java index 65dfbd8..6c5ea79 100644 --- a/src/main/java/parser/Parser.java +++ b/src/main/java/parser/Parser.java @@ -1,3 +1,24 @@ +/*!! Parser */ +/*! +# Parser +Dieser [rekursiv absteigende Parser](https://de.wikipedia.org/wiki/Rekursiver_Abstieg) versteht sehr einfache While-Programme, die folgender Grammatik in [EBNF](https://de.wikipedia.org/wiki/Erweiterte_Backus-Naur-Form) genügen: + + Prog = Id ":=" Expr | + Prog ";" Prog | + "if" "(" Expr ")" "then" "{" Prog "}" "else" "{" Prog "}" | + "while" "(" Expr ")" "{" Prog "}" + Expr = Expr "+" Atom | + Expr "-" Atom | + Atom + Atom = Id | Num | "(" Expr ")" + +Dabei kann `Num` direkt zu einer beliebigen ganzen Zahl und `Id` direkt zu einem beliebigen Bezeichner aus den Zeichen +`a` bis `z` abgeleitet werden. + +Der Parser nimmt einen String mit dem Quelltext entgegen und erzeugt daraus ein `Program`. +*/ + +/*!- Header */ package parser; import expression.*; @@ -8,9 +29,21 @@ import program.*; import java.util.ArrayList; import java.util.List; +/*! +Die Klasse `Parser` implementiert den Parser. Sie wird verwendet, indem dem Konstruktor der zu parsende Quelltext +übergeben wird. Anschließend kann die Methide `parse` aufgerufen werden, die das geparste `Program` zurückgibt. + + Parser parser = new Parser("a := 1"); + Program program = parser.parse(); +*/ public class Parser { - int position = 0; +/*! +Die Instanzvariable `input` hält den zu parsenden Quelltext und in `position` steht die aktuelle Position des Parsers. +Alle folgenden Methoden betrachten den Quelltext jeweils ab der aktuellen Position und erhöhen diese, wenn Zeichen +des Quelltextes geparsed wurden. +*/ + int position; String input; public Parser(String input) { @@ -18,6 +51,7 @@ public class Parser { } public Program parse() { + position = 0; Program program = program(); whitespace(); if (position < input.length()) {