瀏覽代碼

Start documenting with docco

pull/1/head
Malte Schmitz 9 年之前
父節點
當前提交
71f873b527
共有 2 個檔案被更改,包括 62 行新增1 行删除
  1. +27
    -0
      pom.xml
  2. +35
    -1
      src/main/java/parser/Parser.java

+ 27
- 0
pom.xml 查看文件

@@ -12,6 +12,20 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<pluginRepositories>
<pluginRepository>
<id>atlassian-public</id>
<url>https://maven.atlassian.com/content/groups/public/</url>
<releases>
<checksumPolicy>fail</checksumPolicy>
<enabled>true</enabled>
</releases>
<snapshots>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>

<build>
<plugins>
<plugin>
@@ -22,6 +36,19 @@
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>com.atlassian.docco</groupId>
<artifactId>atlassian-docco-maven</artifactId>
<version>1.0-beta4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>docco</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>



+ 35
- 1
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()) {


Loading…
取消
儲存