[PHP] Problem mit Parser für Cobol

yjon

Lt. Junior Grade
Registriert
Juni 2003
Beiträge
422
Moin.

Ich muss für mein Praktikum ein Cobol Parser schreiben. Der durchsucht mir schon jede einzelne Datei, nur der soll die dann in ein Array schreiben, und das klappt nicht so ganz. Habe mal den Parser angehängt.

Ich hoffe ihr könnt mir da weiterhelfen.

Dankeschön.


Grüße, Pierre
 

Anhänge

  • parser.php.txt
    2,2 KB · Aufrufe: 270
Wenn du noch schreibst, wass daran nicht funktioniert findet sich das Problem vielleicht schneller.
 
Der schreibt das ganze irgendwie nicht so richtig in ein array rein. der soll halt jede case anweisung in ein array schreiben und am ende den inhalt jedes arrays ausgeben. das macht der aber nicht. er gibt dann Array aus, und halt den inhalt einer datei wo besonders viele von den gesuchten begriffen vorkommen, die gibt der richtig aus. ist schwer zu beschreiben :rolleyes:
 
Du meinst also folgende Codezeilen:
case (preg_match("|IDENTIFICATION DIVISION|", $zeile));
{
$ident++;
$aident[$ident] = $zeile;
break;
}

Hast du mal testweise an diesen Stellen ein echo gemacht, um zu sehen, ob er überhaupt in die Cases hineinspringt?
Und ob in aident auch die zeile dann drinsteht.

Wenn dieses Array an der stelle richtig gefüllt wird, wäre es ja nur noch ein darstellungsproblem.
 
also: er geht durch die einzelnen cases durch. allerdings, wenn er in einen unterordner geht, dann führt er unten die funktionen aus. der soll aber erst die funktionen ausführen wenn er durch alle dateien und unterordner durchgerannt ist.

ist sehr schwer zu beschreiben was er macht bzw. was nicht.

als beispiel:

in einem ordner sind 3 dateien. php sagt mir per echo das 6 CALL funktionen und 3 COPY funktionen gefunden wurden. allerdings keine identification oder procedure division. dann wie oben beschrieben gibt er die arrays schon aus (was er ja da noch nicht soll) in denen eine COPY funktion und 2 CALL funktionen drin stehen. aber der sollte mir doch 3 und 6 funktionen anzeigen.

danke schonmal.
 
Aso, ja alles klar.

Du setzt für jede Datei die Zählvariablen (ident, proc, copy, call) auf null.
Wenn dann in der ersten Datei 2 Funktionen gefunden wurden, und in der folgenden Datei 3 sind, dann überschreibt er die gefundenen Einträge aus der ersten Datei.

Entweder du machst eine Ausgabe pro Datei, oder du musst die Initialisierung der Zählvariablen vor der foreach-Schleife machen.
 
juhu danke, der tip mit den mit den zählvariablen war gut, bzw. sehr gut. die waren ja auf 0 gesetzt. nu hab ich die einfach mal auskomentiert und zack es funktioniert fast so wie ich will. er bringt mir halt die arrays wenn nen neuer ordner kommt, aber dafür bringt er mir den kompletten inhalt so wie ichs haben wollte.

ist es denn noch möglich zeilennummer und name der datei wo der suchbegriff gefunden wurde mit ins array zu schreiben ?

nochmal vielen dank.

grüße, pierre
 
Du kannst entweder ein Mehrdimensionales Array machen, das würde dann so aussehen:

Index 1: zeilennummer, datei, array

Oder du lässt die Zähler mit 2 Anfangen und packst die Infos fest davor:

Array: zeilennummer, datei, func1, func2, func3 .....

Du musst dann auch dementsprechend bei der Ausgabe die Zählung mit der richtigen Nummer anfangen.
 
yeah funktioniert nun sowas eigentlich alles einwandfrei nur nun schreibt der mir hin:
Notice: Undefined variable: ident in C:\site\aa3.php on line 40

Notice: Undefined variable: copy in C:\site\aa3.php on line 54

Notice: Undefined variable: proc in C:\site\aa3.php on line 47

Notice: Undefined variable: call in C:\site\aa3.php on line 61

halt weil ihm die variablen fehlen. nur wenn ich die variablen definier mit 0 oder mit " " dann funktionierts wieder nicht.

bin doch nochn php noob (:

die hochgeladene version ist die momentane die halt auch schon fast so funktioniert wie ichs will.


vielen vielen dank, grüße
 

Anhänge

  • parser2.php.txt
    2,6 KB · Aufrufe: 243
Definier die Variablen mit 0, da wo du die Arrays auch definierst.

Dann sollte es eigentlich funktionieren.
 
respekt, super vielen dank. vorher wurden sie ja im else zweig definiert. das bringt mich jetzt viel weiter (:

schönen abend noch.

grüße, pierre
 
Zurück
Oben