master > master: allgemeine Aufräumung
This commit is contained in:
19
codego/.gitignore
vendored
19
codego/.gitignore
vendored
@@ -3,8 +3,18 @@
|
||||
|
||||
!/data.env
|
||||
!/README.md
|
||||
!/build.sh
|
||||
!/test.sh
|
||||
|
||||
## Scripts
|
||||
!/scripts
|
||||
!/scripts/requirements
|
||||
!/scripts/build.sh
|
||||
!/scripts/build.sh
|
||||
!/scripts/test.sh
|
||||
|
||||
## Für Erzeugung von Grammatiken:
|
||||
!/grammars
|
||||
!/grammars/README.md
|
||||
!/grammars/*.g4
|
||||
|
||||
## Go Source
|
||||
!/aussagenlogik
|
||||
@@ -14,11 +24,6 @@
|
||||
!/core
|
||||
!/core/environment
|
||||
!/core/utils
|
||||
!/grammars
|
||||
!/**/*.go
|
||||
!/go.mod
|
||||
!/go.sum
|
||||
|
||||
## Für Erzeugung von Grammatiken:
|
||||
!/grammars/README.md
|
||||
!/grammars/*.g4
|
||||
|
||||
@@ -6,24 +6,30 @@ Diese dienen nur zur Demonstration / konkreten Verwirklichung von Verfahren, die
|
||||
|
||||
Der Gebrauch dieser Skripte unterliegt der Eigenverantwortung von Studierenden.
|
||||
|
||||
Da ich kein Informatiker bin, sind auch einige Aspekt bestimmt nicht optimal programmiert/strukturiert.
|
||||
Da ich kein Informatiker bin,
|
||||
sind auch einige Aspekt bestimmt nicht optimal programmiert/strukturiert.
|
||||
Dafür kann jeder in seiner Kopie einfach alles anpassen.
|
||||
Das hier soll einfach funktionieren.
|
||||
|
||||
## Systemvoraussetzungen ##
|
||||
|
||||
- bash (auch bash-for-windows).
|
||||
- golang (mind. 1.6.x)
|
||||
- Java11
|
||||
- Java8+
|
||||
|
||||
Um Schemata in Lexer und Parser zu verwandeln, wird **ANTLR4** gebraucht,
|
||||
(welches wiederum mithilfe eines Java-Archives kompiliert wird, weshalb man Java benötigt).
|
||||
Siehe
|
||||
<https://blog.gopheracademy.com/advent-2017/parsing-with-antlr4-and-go/>
|
||||
für weitere Informationen dazu.
|
||||
|
||||
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:
|
||||
```bash
|
||||
chmod +x build.sh test.sh
|
||||
## oder
|
||||
chmod +x *.sh
|
||||
chmod +x scripts/*.sh
|
||||
```
|
||||
- In `build.sh` gibt es eine Zeile, die zur Kompilierung des Go-Projektes notwendigen Module über **go** installieren lässt.
|
||||
- In `scripts/build.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.
|
||||
@@ -37,7 +43,7 @@ In `data.env` kann man Daten (aktuell: auszuwertenden Ausdruck + Interpretation/
|
||||
|
||||
In einer bash-console zu diesem Ordner navigieren und
|
||||
```bash
|
||||
./build.sh
|
||||
source scripts/build.sh
|
||||
## oder
|
||||
go build main.go && ./main
|
||||
```
|
||||
@@ -72,14 +78,20 @@ Wer etwas standardisierter seine Methoden testen will, kann automatisiertes Test
|
||||
|
||||
- In der Console (wenn noch nicht geschehen) folgenden Befehl einmalig ausführen:
|
||||
```bash
|
||||
chmod +x test.sh
|
||||
chmod +x scripts/test.sh
|
||||
```
|
||||
- In `aussagenlogik/rekursion/rekursion_test.go` beim relevanten Testteil eine oder mehrere der Zeilen
|
||||
```go
|
||||
test.Skip("Methode noch nicht implementiert")
|
||||
```
|
||||
rauskommentieren/löschen.
|
||||
- Jetzt
|
||||
```bash
|
||||
source scripts/test.sh
|
||||
```
|
||||
ausführen.
|
||||
|
||||
Jetzt `test.sh` ausführen. Die unittests testen Methoden gegen mehrere vorkonstruierte Testfälle samt erwarteten Ergebnissen geprüft. Sollten einige Tests scheitern, dann Fehlermeldung durchlesen, und Methode entsprechend der Kritik überarbeiten.
|
||||
Die unittests testen Methoden gegen mehrere vorkonstruierte Testfälle samt erwarteten Ergebnissen geprüft.
|
||||
Sollten einige Tests scheitern, dann Fehlermeldung durchlesen, und Methode entsprechend der Kritik überarbeiten.
|
||||
|
||||
Die geschriebenen Unittests sind natürlich nicht ausführlich. Man kann diese nach Bedarf ergänzen. Am sinnvollsten baut man welche, die wirklich scheitern können, sonst sagen die Tests nichts aus.
|
||||
|
||||
@@ -17,7 +17,7 @@ function call_go() {
|
||||
|
||||
function check_requirements() {
|
||||
[ -f "go.sum" ] && rm "go.sum";
|
||||
call_go get "$( cat requirements )";
|
||||
call_go get "$( cat scripts/requirements )";
|
||||
}
|
||||
|
||||
function get_antlr() {
|
||||
@@ -37,6 +37,7 @@ function precompile_grammars() {
|
||||
local name;
|
||||
! [ -f "grammars/antlr.jar" ] && get_antlr; # <- lädt antl.jar herunter, wenn fehlt
|
||||
pushd grammars >> $NULL;
|
||||
rm -rf .antlr; # <- wird automatisch erzeugt, aber wir brauche dies nicht
|
||||
while read fname; do
|
||||
( [ "$fname" == "" ] || ! [ -f "$fname" ] ) && continue;
|
||||
name="$( echo "$fname" | sed -E "s/^(.*)\.g4$/\1/g" )";
|
||||
@@ -50,11 +51,14 @@ function compile_programme() {
|
||||
[ -f "main" ] && rm "main";
|
||||
echo -e "\033[92;1mGO\033[0m kompiliert \033[1mmain.go\033[0m";
|
||||
call_go build "main.go";
|
||||
! [ -f "main" ] && exit 1;
|
||||
! [ -d "dist" ] && mkdir "dist";
|
||||
mv "main" "dist";
|
||||
}
|
||||
|
||||
function run_programme() {
|
||||
echo -e "\033[92;1mGO\033[0m kompiliertes Programm wird ausgeführt";
|
||||
./main;
|
||||
./dist/main;
|
||||
}
|
||||
|
||||
################################
|
||||
5
codego/scripts/requirements
Normal file
5
codego/scripts/requirements
Normal file
@@ -0,0 +1,5 @@
|
||||
github.com/joho/godotenv@v1.3.0
|
||||
github.com/lithammer/dedent
|
||||
github.com/antlr/antlr4/runtime/Go/antlr
|
||||
github.com/stretchr/testify
|
||||
golang.org/x/tools
|
||||
@@ -17,7 +17,7 @@ function call_go() {
|
||||
|
||||
function check_requirements() {
|
||||
[ -f "go.sum" ] && rm "go.sum";
|
||||
call_go get "$( cat requirements )";
|
||||
call_go get "$( cat scripts/requirements )";
|
||||
}
|
||||
|
||||
function run_unittests(){
|
||||
Reference in New Issue
Block a user