Thread csv Datei mit BNF Steuerdatei parsen (9 answers)
Opened by unaware at 2008-09-08 19:54

unaware
 2008-09-08 19:54
#114374 #114374
User since
2008-09-08
5 Artikel
BenutzerIn
[default_avatar]
Hallo "community",

vielleicht hat jemand für mich einen Tip was ich genau suche ;-)

vorneweg: Ich bin nicht der Hardcore-Programmierer, und perl liest sich für mich momentan eher wie klingonisch als wie eine leicht verständliche Programmiersprache ... aber das mag sich ja noch ändern.

Ich habe folgende Aufgabenstellung:

ich möchte verschiedene csv "Nutzdaten" Dateien auf syntaktische Korrektheit prüfen. Die zugrunde liegende Definitionsdatei soll in einer (E)BNF Form den Dateinamen, sowie die Struktur und Syntax der Nutzdatendatei beschreiben, z.B. (siehe unten). das ganze soll in perl passieren (5.6.0)

Um es mal "sehr top-down" zu formulieren:

Es fehlt mir zwischen dem Funktionsaufruf ....

syntaxcheck.pl definitionsdatei.ebnf TEMP1_IN_20080908_01.DAT

... und der Meldung:
"file sucessfully verified"

oder irgendwelche sinnigen prägnanten Fehlermeldungen, wie z.B.
Syntaxerror in data row 123, field B03 (Fieldname): wrong b03_datatype
Syntaxerror in data row 129, field B05 (Fieldname): wrong b03_value

... "nur noch" das Stückchen perl-code syntaxcheck.pl, welches das macht was ich brauche


Hat da irgendjemand eine heiße Spur für mich? Ich kann mir fast kaum vorstellen, daß eine derartige Aufgabenstellung nicht schon mal da gewesen wäre ...




=====================

DateiName = InterfaceName '_' InterfaceDirection '_' FN-Datum '_' FN-Sequenz '.' FN-Dateityp .

InterfaceName = 'TEMP1' ;
InterfaceDirection = 'IN' ;
FN-Datum = DATE_format_01 ; (* Format: JJJJMMTT *)
FN-Sequenz = Ziffer Ziffer ; (* [00..99] *)
FN-Dateityp = 'DAT' ;

(* -------------------------------------------------------------------- *)

DataFile = Header {Body} Trailer ;
Header = HeaderRecord NewLine ;
Body = BodyRecord NewLine ;
Trailer = TrailerRecord (NewLine | EndOfFile) ;

HeaderSeperator = HS ;
BodySeperator = BS ;
TrailerSeperator = TS ;

HS = '|' ;
BS = ';' ;
TS = '|' ;

HeaderRecord = H01 HS H02 HS H03 HS H04 ;
BodyRecord = B01 BS B02 BS B03 BS B04 BS B05 ;
TrailerRecord = T01 TS T02 ;

....

T01_Attributename = 'PROCESS_VERSION'
T01_Comment = 'version number of generating process'
T01_Datatype = VARCHAR(10)
T01_Validity = mandatory
T01_Value = *

T02_Attributename = 'AN_DS'
T02_Comment = 'count of data records in the file (exceptheader and except footer line)'
T02_Datatype = NUMBER(5)
T02_Validity = mandatory
T02_Value = *

/* definition von standard-datentypen

VARCHAR(10) = xxxxxxxx ?
NUMBER(5) = xxxxxxxxxxx ?

View full thread csv Datei mit BNF Steuerdatei parsen