Compare commits

..

No commits in common. "05ed3cf6c951d2a0c2c9cfe52b0f9c54829781ab" and "fa286a6335c21cabd9554b4872a6e785057716e2" have entirely different histories.

3 changed files with 6 additions and 42 deletions

1
codego/.gitignore vendored
View File

@ -20,5 +20,6 @@
!/go.sum
## Für Erzeugung von Grammatiken:
!/grammars/antlr.jar
!/grammars/README.md
!/grammars/*.g4

View File

@ -12,9 +12,7 @@ Da ich kein Informatiker bin, sind auch einige Aspekt bestimmt nicht optimal pro
- bash (auch bash-for-windows).
- golang (mind. 1.6.x)
- Java11
Dieses Projekt macht von ANTLR4 Gebrauch, um Schemata in Lexer und Parser zu verwandeln. Siehe <https://blog.gopheracademy.com/advent-2017/parsing-with-antlr4-and-go/> für mehr Informationen dazu.
## Voreinstellungen ##
- In einer bash-console zu diesem Ordner navigieren und folgenden Befehl ausführen:
@ -23,11 +21,7 @@ Dieses Projekt macht von ANTLR4 Gebrauch, um Schemata in Lexer und Parser zu ver
## oder
chmod +x *.sh
```
- In `run.sh` gibt es eine Zeile, die zur Kompilierung des Go-Projektes notwendigen Module über **go** installieren lässt.
(Die Liste der Packages findet man in der Datei `requirements`).
Diese Zeile kann man ruhig nach der ersten Ausführung rauskommentieren.
- Dazu kommt, dass **antlr4.jar** heruntergeladen wird.
Mithilfe dieses Java-Archivs werden aus `grammars/*.g4` go-Skripte für die Grammatik erzeugt.
- In `run.sh` gibt es eine Zeile, die zur Kompilierung des Go-Projektes notwendigen Module über **go** installieren lässt. (Die Liste der Packages findet man in der Datei `requirements`). Diese Zeile kann man ruhig nach der ersten Ausführung rauskommentieren.
## Daten ##
@ -43,21 +37,6 @@ go build main.go && ./main
```
ausführen.
Das bash Skript macht folgende Schritte
```bash
# installiert go-module (kann nach 1. Mal rauskommentiert werden):
check_requirements;
# lädt ggf. antlr.jar herunter (wenn fehlt), mit dem die Grammatiken erzeugt werden (kann nach 1. Mal rauskommentiert werden):
precompile_grammars;
# kompiliert Go-Projekt (nach jeder Code-Änderung erneut nötig), sonst rauskommentieren:
compile_programme;
# führt kompiliertes Programm auf Daten in data.env aus:
run_programme;
```
## Offene Challenges ##
In der Datei `aussagenlogik/rekursion.go` (relativ zu diesem Ordner) findet man mehrere leere Methoden (mit dem Kommentar `// Herausforderung...`). Wer es mag, kann versuchen, an seinem Rechner diese Methoden zu definieren und auszuprobieren.

View File

@ -8,25 +8,10 @@
# HILFSMETHODEN
################################
export NULL="/dev/null"
export ANTLR_VESION="4.7";
function call_go() {
go $@;
}
function get_antlr() {
local url="http://www.antlr.org/download/antlr-${ANTLR_VESION}-complete.jar";
( wget $url ) >> $NULL 2> $NULL || (echo -e "[\033[91;1mERROR\033[0m] konnte \033[1;2mwget $url\033[0m nicht ausführen." && exit 1);
while read fname; do
if ! [ "$fname" == "" ] && [ -f "$fname" ]; then
echo -e "\033[92;1mANTLR\033[1m-${ANTLR_VESION}\033[0m wurde heruntergeladen und in \033[1mcodego/grammars\033[0m kopiert.";
mv "$fname" "grammars/antlr.jar"
break
fi
done <<< "$( ls antlr*.jar )"
}
function check_requirements() {
[ -f "go.sum" ] && rm "go.sum";
call_go get "$( cat requirements )";
@ -35,15 +20,14 @@ function check_requirements() {
function precompile_grammars() {
local fname;
local name;
! [ -f "grammars/antlr.jar" ] && get_antlr; # <- lädt antl.jar herunter, wenn fehlt
pushd grammars >> $NULL;
pushd grammars >> /dev/null;
while read fname; do
( [ "$fname" == "" ] || ! [ -f "$fname" ] ) && continue;
name="$( echo "$fname" | sed -E "s/^(.*)\.g4$/\1/g" )";
echo -e "\033[92;1mANTLR\033[0m präkompiliert Grammatik \033[1m${fname}\033[0m";
echo -e "\033[92;1mANTLR4\033[0m präkompiliert Grammatik \033[1m${fname}\033[0m";
java -jar antlr.jar -Dlanguage=Go "$fname" -o "$name";
done <<< "$( ls *.g4 2> $NULL )"
popd >> $NULL;
done <<< "$( ls *.g4 2> /dev/null )"
popd >> /dev/null
}
function compile_programme() {