From 4a442351830fb2d35daa6639a42b51e93efddb15 Mon Sep 17 00:00:00 2001 From: Jeronimo Wanhoff Date: Sun, 31 Mar 2024 09:22:24 +0200 Subject: [PATCH 1/3] improved grammar and bracket handling --- .../antlr4/org/sep3tools/gen/PetroGrammar.g4 | 4 +- src/main/java/org/sep3tools/PetroVisitor.java | 42 +++++++++---------- src/main/resources/petrotest.properties | 5 ++- 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/main/antlr4/org/sep3tools/gen/PetroGrammar.g4 b/src/main/antlr4/org/sep3tools/gen/PetroGrammar.g4 index a365ba0..4543b26 100644 --- a/src/main/antlr4/org/sep3tools/gen/PetroGrammar.g4 +++ b/src/main/antlr4/org/sep3tools/gen/PetroGrammar.g4 @@ -11,7 +11,7 @@ bestandteile: uebergang_bes: bestandteil ('-' bestandteil)+ - | '(' uebergang_bes ')' ( '(' attribute ')' )? + | '(' uebergang_bes ')' ( '(' attribute ')' )+ ; bestandteil: @@ -26,7 +26,7 @@ attribute: attribut # att | uebergang_att # Uebergang_a | attr=attribute '(' unter=attribute ')' # unter_Attribute - | attribute ',' attribute # Aufzaehlung_a + | attribute (',' attribute)+ # Aufzaehlung_a | '(' attribute ')' '(' attribute ')' # Aufzaehlung_a_klammer ; diff --git a/src/main/java/org/sep3tools/PetroVisitor.java b/src/main/java/org/sep3tools/PetroVisitor.java index fdbeb37..156cf50 100644 --- a/src/main/java/org/sep3tools/PetroVisitor.java +++ b/src/main/java/org/sep3tools/PetroVisitor.java @@ -89,6 +89,7 @@ else if (attr.trim().startsWith("(")) { attrib = " (" + attr + ")"; } } + return boden + attrib; } @@ -314,7 +315,7 @@ public String visitAttr_fremddatenfeld(PetroGrammarParser.Attr_fremddatenfeldCon @Override public String visitUebergang_bes(PetroGrammarParser.Uebergang_besContext ctx) { String teile = ""; - String attrib; + String attrib = ""; if (ctx.getText().trim().startsWith("(")) { teile = "(" + visit(ctx.uebergang_bes()) + ")"; } @@ -328,19 +329,10 @@ public String visitUebergang_bes(PetroGrammarParser.Uebergang_besContext ctx) { } } } - if (isNull(ctx.attribute())) { - attrib = ""; - } - else { - String attr = visit(ctx.attribute()); - if (isNull(attr)) { - attrib = ""; - } - else if (attr.trim().startsWith("(")) { - attrib = attr; - } - else { - attrib = " (" + attr + ")"; + for (PetroGrammarParser.AttributeContext teil : ctx.attribute()) { + attrib = attrib + " (" + visit(teil) + ")"; + if (attrib.startsWith(" ( (")) { + attrib = attrib.substring(2, attrib.length() - 1); } } return teile + attrib; @@ -413,13 +405,19 @@ public String visitTeil(PetroGrammarParser.TeilContext ctx) { */ @Override public String visitAufzaehlung_a(PetroGrammarParser.Aufzaehlung_aContext ctx) { - String att1 = visit(ctx.attribute(0)); - String att2 = visit(ctx.attribute(1)); - if (att1.startsWith(" (")) - att1 = att1.substring(2, att1.length() - 1); - if (att2.startsWith(" (")) - att2 = att2.substring(2, att2.length() - 1); - return " (" + att1 + ", " + att2 + ")"; + String attrib = ""; + for (PetroGrammarParser.AttributeContext teil : ctx.attribute()) { + if (attrib.isEmpty()) { + attrib = visit(teil); + } + else { + attrib = attrib + ", " + visit(teil); + } + if (attrib.startsWith(" ( (")) { + attrib = attrib.substring(2, attrib.length() - 1); + } + } + return attrib; } /** @@ -435,7 +433,7 @@ public String visitAufzaehlung_a_klammer(PetroGrammarParser.Aufzaehlung_a_klamme att1 = att1.substring(2, att1.length() - 1); if (att2.startsWith(" (")) att2 = att2.substring(2, att2.length() - 1); - return " (" + att1 + ") (" + att2 + ")"; + return "(" + att1 + ") (" + att2 + ")"; } /** diff --git a/src/main/resources/petrotest.properties b/src/main/resources/petrotest.properties index f40f5cf..ef7c4a5 100644 --- a/src/main/resources/petrotest.properties +++ b/src/main/resources/petrotest.properties @@ -19,5 +19,8 @@ ca=Calamiten (gG-mG-fG)(gs-fs)=(Grobkies [20-63 mm] bis Mittelkies [6,3-20 mm] bis Feinkies [2,0-6,3 mm]) (grobsandig bis feinsandig) G?=Kies [gerundet] fraglich G!=Kies [gerundet] sicher -(fS-mS)(u,(fg-mg2)(lok))=(Feinsand [0,063-0,2 mm] bis Mittelsand [0,2-0,63 mm]) (schluffig, feinkiesig bis schwach mittelkiesig) (lokal) +(fS-mS)(u,(fg-mg2)(lok))=(Feinsand [0,063-0,2 mm] bis Mittelsand [0,2-0,63 mm]) (schluffig, (feinkiesig bis schwach mittelkiesig) (lokal)) t4=stark tonig +(fS-mS)(t,u)(pw)=(Feinsand [0,063-0,2 mm] bis Mittelsand [0,2-0,63 mm]) (tonig, schluffig) (partienweise) +U(fs,t2,(mg-gg)(voe))=Schluff (feinsandig, schwach tonig, (mittelkiesig bis grobkiesig) (vereinzelt vorhanden)) +(fG-mG)(gs,(t,u)(pw))=(Feinkies [2,0-6,3 mm] bis Mittelkies [6,3-20 mm]) (grobsandig, (tonig, schluffig) (partienweise)) \ No newline at end of file From a8574d022ff2b892c71a085ec343853dfb2b72ed Mon Sep 17 00:00:00 2001 From: Jeronimo Wanhoff Date: Tue, 2 Apr 2024 14:23:30 +0200 Subject: [PATCH 2/3] added equal sign translation for colors, added additional bracket handling --- .../antlr4/org/sep3tools/gen/PetroGrammar.g4 | 11 ++-- src/main/java/org/sep3tools/PetroVisitor.java | 23 +++++++- src/main/resources/beschbgtest.properties | 6 +- src/main/resources/beschbvtest.properties | 2 +- src/main/resources/bgruppetest.properties | 2 +- src/main/resources/farbetest.properties | 58 ++++++++++--------- .../resources/fremddatenfeldtest.properties | 8 ++- src/main/resources/genesetest.properties | 24 ++++---- src/main/resources/kalkgehtest.properties | 6 +- src/main/resources/petrotest.properties | 58 ++++++++++--------- src/main/resources/zusatztest.properties | 4 +- .../java/org/sep3tools/SepExamplesTest.java | 2 +- 12 files changed, 119 insertions(+), 85 deletions(-) diff --git a/src/main/antlr4/org/sep3tools/gen/PetroGrammar.g4 b/src/main/antlr4/org/sep3tools/gen/PetroGrammar.g4 index 4543b26..c2b692d 100644 --- a/src/main/antlr4/org/sep3tools/gen/PetroGrammar.g4 +++ b/src/main/antlr4/org/sep3tools/gen/PetroGrammar.g4 @@ -1,12 +1,15 @@ grammar PetroGrammar; -schichtbeschreibung: bestandteile; +schichtbeschreibung: + (bestandteile)+ + ; bestandteile: - bestandteile ',' bestandteile # Aufzaehlung_b + bestandteile (',' bestandteile)+ # Aufzaehlung_b | '(' bestandteile ',' bestandteile ')' ( '(' attribute ')' )? # Aufzaehlung_b_k | bestandteil # Teil | uebergang_bes # Uebergang_b + | '(' bestandteile ')' # Klammer ; uebergang_bes: @@ -26,7 +29,7 @@ attribute: attribut # att | uebergang_att # Uebergang_a | attr=attribute '(' unter=attribute ')' # unter_Attribute - | attribute (',' attribute)+ # Aufzaehlung_a + | attribute (',' attribute)+ # Aufzaehlung_a | '(' attribute ')' '(' attribute ')' # Aufzaehlung_a_klammer ; @@ -43,7 +46,7 @@ attribut: TIEFE: ([0-9]|'.')+; TEIL: ANY+; UNBEKANNT: ANY+; -ANY: [a-z]|[A-Z]|[0-9]|'^'|'*'|'+'|'"'|'%'; +ANY: [a-z]|[A-Z]|[0-9]|'^'|'*'|'+'|'"'|'%'|'='; FRAGLICH: '?'; SICHER: '!'; DATENFELDKUERZEL: ('S'|'P'|'G'|'F'|'Z')':'; diff --git a/src/main/java/org/sep3tools/PetroVisitor.java b/src/main/java/org/sep3tools/PetroVisitor.java index 156cf50..6b135d3 100644 --- a/src/main/java/org/sep3tools/PetroVisitor.java +++ b/src/main/java/org/sep3tools/PetroVisitor.java @@ -54,7 +54,16 @@ private static String getS3InDfResultSet(String df, String searchTerm) { */ @Override public String visitSchichtbeschreibung(PetroGrammarParser.SchichtbeschreibungContext ctx) { - return visitChildren(ctx); + String teile = ""; + for (PetroGrammarParser.BestandteileContext teil : ctx.bestandteile()) { + if (teile.isEmpty()) { + teile = visit(teil); + } + else { + teile = teile + ", " + visit(teil); + } + } + return visitChildren(ctx).trim(); } /** @@ -139,6 +148,11 @@ public String visitBestandteil_fremddatenfeld(PetroGrammarParser.Bestandteil_fre return dfKuerzel + teil; } + @Override + public String visitKlammer(PetroGrammarParser.KlammerContext ctx) { + return "(" + visitChildren(ctx) + ") "; + } + /** * Visit a parse tree produced by the {@code bestandteil_sicher} labeled alternative * in {@link PetroGrammarParser}. @@ -234,6 +248,11 @@ private static String getColorString(String color) { int partialBodenLength = 2; while (partialBodenLength <= forColorSeparation.length()) { String partialTermForColor = forColorSeparation.substring(forColorSeparation.length() - partialBodenLength); + if (partialTermForColor.endsWith("=")) { + bodenTerm = "lich" + bodenTerm; + forColorSeparation = forColorSeparation.substring(0, forColorSeparation.length() - 1); + partialBodenLength--; + } String colorPart = getS3InDfResultSet("F:", partialTermForColor); if (!colorPart.isEmpty()) { bodenTerm = colorPart + bodenTerm; @@ -345,7 +364,7 @@ public String visitUebergang_bes(PetroGrammarParser.Uebergang_besContext ctx) { */ @Override public String visitAufzaehlung_b(PetroGrammarParser.Aufzaehlung_bContext ctx) { - return visit(ctx.bestandteile(0)) + ", " + visit(ctx.bestandteile(1)); + return visit(ctx.bestandteile(0)).trim() + ", " + visit(ctx.bestandteile(1)).trim(); } /** diff --git a/src/main/resources/beschbgtest.properties b/src/main/resources/beschbgtest.properties index 0acbe17..dd73bd2 100644 --- a/src/main/resources/beschbgtest.properties +++ b/src/main/resources/beschbgtest.properties @@ -1,3 +1,3 @@ -kb2,kb3(un)=schlechte Kornbindung, mäßige Kornbindung (unten) -idm=Mitte -(stf-hfe)(ob),(stf)(idm),(stf-hfe,stf)(un)=(steif bis halbfest) (oben), (steif) (Mitte), (steif bis halbfest, steif) (unten) +kb2,kb3(un) = schlechte Kornbindung, mäßige Kornbindung (unten) +idm = Mitte +(stf-hfe)(ob),(stf)(idm),(stf-hfe,stf)(un) = (steif bis halbfest) (oben), (steif) (Mitte), (steif bis halbfest, steif) (unten) diff --git a/src/main/resources/beschbvtest.properties b/src/main/resources/beschbvtest.properties index 8bce92d..ac1daad 100644 --- a/src/main/resources/beschbvtest.properties +++ b/src/main/resources/beschbvtest.properties @@ -1 +1 @@ -spvl(30%-40%,tv(29.02-29.23))=Spülverlust [Prozent] (30% bis 40%, Teufe von (29,02 bis 29,23)) \ No newline at end of file +spvl(30%-40%,tv(29.02-29.23)) = Spülverlust [Prozent] (30% bis 40%, Teufe von (29,02 bis 29,23)) \ No newline at end of file diff --git a/src/main/resources/bgruppetest.properties b/src/main/resources/bgruppetest.properties index 7a8ca17..9c8dd9e 100644 --- a/src/main/resources/bgruppetest.properties +++ b/src/main/resources/bgruppetest.properties @@ -1 +1 @@ -GE=Kies, enggestuft +GE = Kies, enggestuft diff --git a/src/main/resources/farbetest.properties b/src/main/resources/farbetest.properties index a84bbe9..c49ad6b 100644 --- a/src/main/resources/farbetest.properties +++ b/src/main/resources/farbetest.properties @@ -1,28 +1,30 @@ -ro=rot -bn=braun -dro=dunkelrot -hbn=hellbraun -gr=grau -bl=blau -dd=sehr dunkel -hgr=hellgrau -mt=matt -ol=oliv -olst=olivstichig -sw=schwarz -ge=gelb -dgr=dunkelgrau -gn=grün -rs=rosa -ddro=sehr dunkelrot -holst=hellolivstichig -gnli=grünlich -grst=graustichig -robn=rotbraun -blro=blaurot -mtol=mattoliv -mtolst=mattolivstichig -drohbngr,blro,ddro,hgrbn,mtgr,mtol,mtolst=dunkelrothellbraungrau, blaurot, sehr dunkelrot, hellgraubraun, mattgrau, mattoliv, mattolivstichig -dro-hgr=dunkelrot bis hellgrau -robn,sw,ge,dgr-gn,swgerobnrs=rotbraun, schwarz, gelb, dunkelgrau bis grün, schwarzgelbrotbraunrosa -gnli,grst=grünlich, graustichig +ro = rot +bn = braun +dro = dunkelrot +hbn = hellbraun +gr = grau +bl = blau +dd = sehr dunkel +hgr = hellgrau +mt = matt +ol = oliv +olst = olivstichig +sw = schwarz +ge = gelb +dgr = dunkelgrau +gn = grün +rs = rosa +ddro = sehr dunkelrot +holst = hellolivstichig +gnli = grünlich +grst = graustichig +robn = rotbraun +blro = blaurot +mtol = mattoliv +mtolst = mattolivstichig +drohbngr,blro,ddro,hgrbn,mtgr,mtol,mtolst = dunkelrothellbraungrau, blaurot, sehr dunkelrot, hellgraubraun, mattgrau, mattoliv, mattolivstichig +dro-hgr = dunkelrot bis hellgrau +robn,sw,ge,dgr-gn,swgerobnrs = rotbraun, schwarz, gelb, dunkelgrau bis grün, schwarzgelbrotbraunrosa +gnli,grst = grünlich, graustichig +((robn,rovi,bnvi,gngr,hbngr)(wl))(ob),rovi,robn,rovibn,bnro,(gn,hge,ro,gngr,holgr)(lag) = ((rotbraun, rotviolett, braunviolett, grüngrau, hellbraungrau) (wechsellagernd)) (oben), rotviolett, rotbraun, rotviolettbraun, braunrot, (grün, hellgelb, rot, grüngrau, hellolivgrau) (Lagen) +olgr-smgn=gr,hol-hgrgn=-ol,dgr-dolgr,bnro-rovi(zt),(hge=,smbn)(lag) = olivgrau bis schmutziggrünlichgrau, helloliv bis hellgraugrünlich bis oliv, dunkelgrau bis dunkelolivgrau, braunrot bis rotviolett (zum Teil [veraltet]), (hellgelblich, schmutzigbraun) (Lagen) diff --git a/src/main/resources/fremddatenfeldtest.properties b/src/main/resources/fremddatenfeldtest.properties index 08e3485..dc7d7a1 100644 --- a/src/main/resources/fremddatenfeldtest.properties +++ b/src/main/resources/fremddatenfeldtest.properties @@ -1,4 +1,6 @@ -G(F:ro)=Kies [gerundet] (rot) -G(F:ddro)=Kies [gerundet] (sehr dunkelrot) -U(hz(res),H(res),zg1,F:mtolst)=Schluff (Holzreste (Reste), Torf (Reste), sehr schwach zersetzt, mattolivstichig) +G(F:ro) = Kies [gerundet] (rot) +G(F:ddro) = Kies [gerundet] (sehr dunkelrot) +U(hz(res),H(res),zg1,F:mtolst) = Schluff (Holzreste (Reste), Torf (Reste), sehr schwach zersetzt, mattolivstichig) +S:tmiBRuB = Untere Brieske-Schichten B +S:tmiF1 = Lausitzer Flöz 1 diff --git a/src/main/resources/genesetest.properties b/src/main/resources/genesetest.properties index 92c59bf..354dd03 100644 --- a/src/main/resources/genesetest.properties +++ b/src/main/resources/genesetest.properties @@ -1,11 +1,13 @@ -as,Lou(lok)=Abspülung, Schwemmlöss (lokal) -Mg,Gb(P:^kkn)=Geschiebemergel, Geschiebe (Knollenkalk) -y=Auffüllung [allgemein] -ya=Asche (anthropogen) -lok=lokal -y,(ya,P:fG)(lok)=Auffüllung [allgemein], (Asche (anthropogen), Feinkies [2,0-6,3 mm]) (lokal) -(P:t4)=(stark tonig) -(Mg,lw)=(Geschiebemergel, lagenweise) -gf,g=glazifluviatil, glaziär -(P:t4)(Mg,lw),gf,g=(stark tonig) (Geschiebemergel, lagenweise), glazifluviatil, glaziär -(P:fs,P:ms)(Mg),g=(feinsandig, mittelsandig) (Geschiebemergel), glaziär +as,Lou(lok) = Abspülung, Schwemmlöss (lokal) +Mg,Gb(P:^kkn) = Geschiebemergel, Geschiebe (Knollenkalk) +y = Auffüllung [allgemein] +ya = Asche (anthropogen) +lok = lokal +y,(ya,P:fG)(lok) = Auffüllung [allgemein], (Asche (anthropogen), Feinkies [2,0-6,3 mm]) (lokal) +(P:t4) = (stark tonig) +(Mg,lw) = (Geschiebemergel, lagenweise) +gf,g = glazifluviatil, glaziär +(P:t4)(Mg,lw),gf,g = (stark tonig) (Geschiebemergel, lagenweise), glazifluviatil, glaziär +(P:fs,P:ms)(Mg),g = (feinsandig, mittelsandig) (Geschiebemergel), glaziär +L(F:bn),t,C(alpi,+B) = L (braun), Terrasse, C-Horizont (alpi, +B) +Mg,Gb(P:^kkn),C(S:tmiF3) = Geschiebemergel, Geschiebe (Knollenkalk), C-Horizont (Lausitzer Flöz 3 (Dritter miozäner Flözhorizont)) \ No newline at end of file diff --git a/src/main/resources/kalkgehtest.properties b/src/main/resources/kalkgehtest.properties index 42d8a23..3946e19 100644 --- a/src/main/resources/kalkgehtest.properties +++ b/src/main/resources/kalkgehtest.properties @@ -1,3 +1,3 @@ -zg1-zg2(ob)=sehr schwach zersetzt bis schwach zersetzt (oben) -kf,k(lse,F:we)=kalkfrei, kalkhaltig (als Linse, weiss) -k,k(lse,F:we)=kalkhaltig, kalkhaltig (als Linse, weiss) +zg1-zg2(ob) = sehr schwach zersetzt bis schwach zersetzt (oben) +kf,k(lse,F:we) = kalkfrei, kalkhaltig (als Linse, weiss) +k,k(lse,F:we) = kalkhaltig, kalkhaltig (als Linse, weiss) diff --git a/src/main/resources/petrotest.properties b/src/main/resources/petrotest.properties index ef7c4a5..3774856 100644 --- a/src/main/resources/petrotest.properties +++ b/src/main/resources/petrotest.properties @@ -1,26 +1,32 @@ -^ms=Mittelsandstein -^u=Schluffstein -^gs=Grobsandstein -W,^gs(l-fs),^u=Wasser, Grobsandstein (lehmig bis feinsandig), Schluffstein -^ms(r2,r3(tw),gs(lw,r2-r3)),^u(t,lw),^gs(r3,bei(113),nf?)=Mittelsandstein (kantengerundet, mäßig gerundet (teilweise), grobsandig (lagenweise, kantengerundet bis mäßig gerundet)), Schluffstein (tonig, lagenweise), Grobsandstein (mäßig gerundet, bei 113, Nachfall (fraglich)) -^ksw-^kal(mas,fe,spt,brc,cav2(bei(25.5)),p(unz,tv(40.4))),Rfl("ca"),^if2(knl,bei(31.4,32.8,34.65,35.8,40.4))=Schwammkalk bis Algenkalk (massig, fest, splittrig, brechend, schwach kavernös (bei 25,5), porös (unten zunehmend, Teufe von 40,4)), Hohlraumfüllung (Kalzit), wenig Flint (knollig, bei 31,4, 32,8, 34,65, 35,8, 40,4) -G(fg-gg,ms-gs,mats,mata,grs(tw)),fX-mX(mata),mS(fs,grs,fg-mg,mx(voe))=Kies [gerundet] (feinkiesig bis grobkiesig, mittelsandig bis grobsandig, Schwarzwaldmaterial, alpines Material, grusig (teilweise)), Feinsteinstücke [2,0-6,3 mm] bis Mittelsteinstücke [6,3-20 mm] (alpines Material), Mittelsand [0,2-0,63 mm] (feinsandig, grusig, feinkiesig bis mittelkiesig, mittelsteinig (vereinzelt vorhanden)) -G(fg-gg,ms-gs,mats,mata,grs(tw)),fX-mX(mata),mS(fs,grs,fg-mg2,mx(voe))=Kies [gerundet] (feinkiesig bis grobkiesig, mittelsandig bis grobsandig, Schwarzwaldmaterial, alpines Material, grusig (teilweise)), Feinsteinstücke [2,0-6,3 mm] bis Mittelsteinstücke [6,3-20 mm] (alpines Material), Mittelsand [0,2-0,63 mm] (feinsandig, grusig, feinkiesig bis schwach mittelkiesig, mittelsteinig (vereinzelt vorhanden)) -U(hz(res),H(res),zg1)=Schluff (Holzreste (Reste), Torf (Reste), sehr schwach zersetzt) -(S-G)(u,t,pf(zg,vw))=(Sand [allgemein] bis Kies [gerundet]) (schluffig, tonig, Pflanzenreste (zersetzt, verwittert)) -U(ms2,x(+Gr(gro(0.005))))=Schluff (schwach mittelsandig, steinig (Granit (groß 0,005))) -(^u(fs)-^fs(u)),^d(u,"ba")=(Schluffstein (feinsandig) bis Feinsandstein (schluffig)), Dolomitstein (schluffig, Baryt) -(fG-gG)(x)=(Feinkies [2,0-6,3 mm] bis Grobkies [20-63 mm]) (steinig) -(^u(t,fs(tw)),^gs,^fs,^d(s,ikl))(wl)=(Schluffstein (tonig, feinsandig (teilweise)), Grobsandstein, Feinsandstein, Dolomitstein (sandig, intraklastisch)) (wechsellagernd) -(U,fS)(ms2)=(Schluff, Feinsand [0,063-0,2 mm]) (schwach mittelsandig) -(^k(mas,fla,pof,bel)),(fls(rgu))=(Kalkstein (massig, flaserig, Porifera, Belemniten)), (Flasern (unregelmäßig)) -"ca"=Kalzit -ca=Calamiten -(gG-mG-fG)(gs-fs)=(Grobkies [20-63 mm] bis Mittelkies [6,3-20 mm] bis Feinkies [2,0-6,3 mm]) (grobsandig bis feinsandig) -G?=Kies [gerundet] fraglich -G!=Kies [gerundet] sicher -(fS-mS)(u,(fg-mg2)(lok))=(Feinsand [0,063-0,2 mm] bis Mittelsand [0,2-0,63 mm]) (schluffig, (feinkiesig bis schwach mittelkiesig) (lokal)) -t4=stark tonig -(fS-mS)(t,u)(pw)=(Feinsand [0,063-0,2 mm] bis Mittelsand [0,2-0,63 mm]) (tonig, schluffig) (partienweise) -U(fs,t2,(mg-gg)(voe))=Schluff (feinsandig, schwach tonig, (mittelkiesig bis grobkiesig) (vereinzelt vorhanden)) -(fG-mG)(gs,(t,u)(pw))=(Feinkies [2,0-6,3 mm] bis Mittelkies [6,3-20 mm]) (grobsandig, (tonig, schluffig) (partienweise)) \ No newline at end of file +^ms = Mittelsandstein +^u = Schluffstein +^gs = Grobsandstein +W,^gs(l-fs),^u = Wasser, Grobsandstein (lehmig bis feinsandig), Schluffstein +^ms(r2,r3(tw),gs(lw,r2-r3)),^u(t,lw),^gs(r3,bei(113),nf?) = Mittelsandstein (kantengerundet, mäßig gerundet (teilweise), grobsandig (lagenweise, kantengerundet bis mäßig gerundet)), Schluffstein (tonig, lagenweise), Grobsandstein (mäßig gerundet, bei 113, Nachfall (fraglich)) +^ksw-^kal(mas,fe,spt,brc,cav2(bei(25.5)),p(unz,tv(40.4))),Rfl("ca"),^if2(knl,bei(31.4,32.8,34.65,35.8,40.4)) = Schwammkalk bis Algenkalk (massig, fest, splittrig, brechend, schwach kavernös (bei 25,5), porös (unten zunehmend, Teufe von 40,4)), Hohlraumfüllung (Kalzit), wenig Flint (knollig, bei 31,4, 32,8, 34,65, 35,8, 40,4) +G(fg-gg,ms-gs,mats,mata,grs(tw)),fX-mX(mata),mS(fs,grs,fg-mg,mx(voe)) = Kies [gerundet] (feinkiesig bis grobkiesig, mittelsandig bis grobsandig, Schwarzwaldmaterial, alpines Material, grusig (teilweise)), Feinsteinstücke [2,0-6,3 mm] bis Mittelsteinstücke [6,3-20 mm] (alpines Material), Mittelsand [0,2-0,63 mm] (feinsandig, grusig, feinkiesig bis mittelkiesig, mittelsteinig (vereinzelt vorhanden)) +G(fg-gg,ms-gs,mats,mata,grs(tw)),fX-mX(mata),mS(fs,grs,fg-mg2,mx(voe)) = Kies [gerundet] (feinkiesig bis grobkiesig, mittelsandig bis grobsandig, Schwarzwaldmaterial, alpines Material, grusig (teilweise)), Feinsteinstücke [2,0-6,3 mm] bis Mittelsteinstücke [6,3-20 mm] (alpines Material), Mittelsand [0,2-0,63 mm] (feinsandig, grusig, feinkiesig bis schwach mittelkiesig, mittelsteinig (vereinzelt vorhanden)) +U(hz(res),H(res),zg1) = Schluff (Holzreste (Reste), Torf (Reste), sehr schwach zersetzt) +(S-G)(u,t,pf(zg,vw)) = (Sand [allgemein] bis Kies [gerundet]) (schluffig, tonig, Pflanzenreste (zersetzt, verwittert)) +U(ms2,x(+Gr(gro(0.005)))) = Schluff (schwach mittelsandig, steinig (Granit (groß 0,005))) +(^u(fs)-^fs(u)),^d(u,"ba") = (Schluffstein (feinsandig) bis Feinsandstein (schluffig)), Dolomitstein (schluffig, Baryt) +(fG-gG)(x) = (Feinkies [2,0-6,3 mm] bis Grobkies [20-63 mm]) (steinig) +(^u(t,fs(tw)),^gs,^fs,^d(s,ikl))(wl) = (Schluffstein (tonig, feinsandig (teilweise)), Grobsandstein, Feinsandstein, Dolomitstein (sandig, intraklastisch)) (wechsellagernd) +(U,fS)(ms2) = (Schluff, Feinsand [0,063-0,2 mm]) (schwach mittelsandig) +(^k(mas,fla,pof,bel)),(fls(rgu)) = (Kalkstein (massig, flaserig, Porifera, Belemniten)), (Flasern (unregelmäßig)) +"ca" = Kalzit +ca = Calamiten +(gG-mG-fG)(gs-fs) = (Grobkies [20-63 mm] bis Mittelkies [6,3-20 mm] bis Feinkies [2,0-6,3 mm]) (grobsandig bis feinsandig) +G? = Kies [gerundet] fraglich +G! = Kies [gerundet] sicher +(fS-mS)(u,(fg-mg2)(lok)) = (Feinsand [0,063-0,2 mm] bis Mittelsand [0,2-0,63 mm]) (schluffig, (feinkiesig bis schwach mittelkiesig) (lokal)) +t4 = stark tonig +(fS-mS)(t,u)(pw) = (Feinsand [0,063-0,2 mm] bis Mittelsand [0,2-0,63 mm]) (tonig, schluffig) (partienweise) +U(fs,t2,(mg-gg)(voe)) = Schluff (feinsandig, schwach tonig, (mittelkiesig bis grobkiesig) (vereinzelt vorhanden)) +(fG-mG)(gs,(t,u)(pw)) = (Feinkies [2,0-6,3 mm] bis Mittelkies [6,3-20 mm]) (grobsandig, (tonig, schluffig) (partienweise)) +Lf,Lou,U(t(4),fs(2),smi(T,F:hgn=)) = Auelehm, Schwemmlöss, Schluff (tonig 4, feinsandig 2, in Schmitzen (Ton, hellgrünlich)) +T(u,sli,F:sw=,F:grbn,wh,wh-stf) = Ton (schluffig, schlickig, schwarzlich, graubraun, weich, weich bis steif) +mS(g),M(smz,F:ge=gr) = Mittelsand [0,2-0,63 mm] (kiesig), Mergel (Schmitzen, gelblichgrau) +Lf,U,Sc(M,t,stf,F:bn,F:gn=bn),B(X) = Auelehm, Schluff, Sc (Mergel, tonig, steif, braun, grünlichbraun), Brocken (Steine [63-200 mm]) +^s(kgm-kgg,hf,F:hgn=gr) = Sandstein (mittelkörnig bis grobkörnig, hartfest, hellgrünlichgrau) +M(ss(2),brl,stf-sth,F:gn=gr,yrs) = Mergel (geschichtet 2, bröckelig, steif bis halbsteif, grünlichgrau, yrs) diff --git a/src/main/resources/zusatztest.properties b/src/main/resources/zusatztest.properties index ad7cace..ec702b1 100644 --- a/src/main/resources/zusatztest.properties +++ b/src/main/resources/zusatztest.properties @@ -1,2 +1,2 @@ -AS=Sattelfläche -gwt(3.5,28.03.2001)=gwt (3,5, 28,03,2001) +AS = Sattelfläche +gwt(3.5,28.03.2001) = gwt (3,5, 28,03,2001) diff --git a/src/test/java/org/sep3tools/SepExamplesTest.java b/src/test/java/org/sep3tools/SepExamplesTest.java index 0e83846..a449cd9 100644 --- a/src/test/java/org/sep3tools/SepExamplesTest.java +++ b/src/test/java/org/sep3tools/SepExamplesTest.java @@ -82,7 +82,7 @@ public void verifyFremdDatenfeldExamples() { public void verifySepExamples(String df, String propFile) { JavaConnector.setPropertiesFile(DBPROPFILENAME); JavaConnector.setDf(df); - Properties properties = loadPropertiesFromFile(propFile, "="); + Properties properties = loadPropertiesFromFile(propFile, " = "); Enumeration enuKeys = properties.keys(); while (enuKeys.hasMoreElements()) { From 3b9dd50e49a4bd566472cb6258834ee034b9ee08 Mon Sep 17 00:00:00 2001 From: Jeronimo Wanhoff Date: Tue, 2 Apr 2024 14:41:07 +0200 Subject: [PATCH 3/3] added new bracket handling to bml --- src/main/java/org/sep3tools/BmlVisitor.java | 21 +++++---------------- src/main/resources/bmltest.properties | 4 ++-- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/sep3tools/BmlVisitor.java b/src/main/java/org/sep3tools/BmlVisitor.java index a053764..88e3f9d 100644 --- a/src/main/java/org/sep3tools/BmlVisitor.java +++ b/src/main/java/org/sep3tools/BmlVisitor.java @@ -140,9 +140,9 @@ public String visitAttr(PetroGrammarParser.AttrContext ctx) { @Override public String visitUebergang_bes(PetroGrammarParser.Uebergang_besContext ctx) { String teile = ""; - String attrib; + String attrib = ""; - if (ctx.getText().startsWith(" (")) { + if (ctx.getText().trim().startsWith("(")) { teile = visit(ctx.uebergang_bes()); } else { @@ -155,20 +155,9 @@ public String visitUebergang_bes(PetroGrammarParser.Uebergang_besContext ctx) { } } } - if (isNull(ctx.attribute())) { - attrib = ""; - } - else { - String attr = visit(ctx.attribute()); - if (isNull(attr)) { - attrib = ""; - } - else if (attr.startsWith(" (")) { - attrib = attr.substring(2, attr.length() - 1); - } - else { - attrib = attr; - } + + for (PetroGrammarParser.AttributeContext teil : ctx.attribute()) { + attrib = attrib + ", " + visit(teil); } return teile + attrib; } diff --git a/src/main/resources/bmltest.properties b/src/main/resources/bmltest.properties index da1e81d..e338960 100644 --- a/src/main/resources/bmltest.properties +++ b/src/main/resources/bmltest.properties @@ -1,5 +1,5 @@ ^hzk,\ fS(ms2,\ "gl"2)=fS,mS G(fg-gg,ms-gs,mats,mata,grs(tw)),fX-mX(mata),mS(fs,grs,fg-mg2,mx(voe))=G,fG,gG,mS,gS,eG,X,fS,mG U(hz(res),H(res),zg1)=U,Pfl,H -(fS-mS)(u,(fg-mg2)(lok))=U,fG,mG -(fS-mS)(u,(fg-mg2)(fs))=U,fG,mG,fS +(fS-mS)(u,(fg-mg2)(lok))=fS,mS,U,fG,mG +(fS-mS)(u,(fg-mg2)(fs))=fS,mS,U,fG,mG