[Allegro] Reminder: Acon-Bugs

Thomas Berger ThB at Gymel.com
Di Aug 25 11:43:39 CEST 2015


Am 25.08.2015 um 11:19 schrieb Bernhard Eversberg:
> Am 24.08.2015 um 12:16 schrieb Bernhard Eversberg:
>> das Kernproblem ist: der Parser (parser.cpp) ist agnostisch bzgl.
>> der allegro-Registerbezeichnungen. Er zerlegt nur die Anfrage bzgl. der
>> Syntaxelemente  and,  or, not, Klammern und "...". Ob den Operator-
>> wörtern aber ein Registername folgt oder Suchbegriffselemente, das
>> checkt er nicht.
>>
> Denkbar wäre noch, daß man die Operatorenwörter flexibilisiert.
> Die Wörter and, or, not sind fest eingebaut, man könnte aber Variablen
> draus machen, die man per FLEX setzen könnte. Sagen wir, es sei "+++"
> statt "and" gesetzt, dann würde ein Titel mit "and" drin anstandslos
> gefunden. Die Fernglassuche könnte natürlich automatisch die gesetzten
> Wörter nehmen, die "Schnelle Suche" auch (onfnda99.flx), aber bei
> der manuellen Eingabe und in eigenen FLEXen, da müßte man sehr
> aufpassen. Vorhandene FLEXe könnten plötzlich nicht mehr klappen...
> 
> Nur mal so 'ne Idee, vielleicht doch etwas problematisch.

Wurzel allen Uebels ist m.E., dass man in den 1990er Jahren
besonders smart sein wollte und den Benutzer nicht durch
Syntaxvorschriften wie "Suchbegriffe in Anfuehrungszeichen setzen"
ueberfordern wollte. Dass das keine originaere allegro-Idee ist
sondern evtl. von der Pica-Abfragesprache so geklaut war, mag
sein, aendert aber nichts daran, dass es keine gute Idee war:
Es entstehen Ambivalenzen, wie sie Herr Lehmann jetzt haufenweise
entdeckt hat: "---" oder " and " oder eine runde Klammer
kommen ab und zu halt doch einmal vor...

acon erlaubt so eine Flexibilisierung durch ein Spezialkommando,
das "---" (bzw. dort "@") auf etwas anderes umdefiniert, aber
anscheinend auch nicht in allen Situationen - aber das das
Hin- und Her-Schubsen von "problematischen" Zeichenketten
keine stabile Loesung ist, hat uns just heute morgen Herr
Kleindienst vorgefuehrt.

Die Anforderung ist eigentlich, etwas tendenziell mehrdeutiges
(beliebig formulierte Suche mit beliebigen Suchbegriffen) *ohne*
tiefere Analyse rein mechanisch in etwas eindeutiges umwandeln
zu koennen. Also typischerweise:

* Escape den Suchbegriff, damit
* "..." drumrum gesetzt werden kann
* montiere das zu Suchkommandos

Das erfordert natuerlich einen Parser, der das aus "..." extrahierte
un-escapen kann (und bei der Ermittlung des zwischen "..."
eingeschlossenen Inhalts nicht ueber Escaptes stolpert). Dafuer gibt
es in keiner der vielen Allegro-Steuersprachen bislang einen
Praezedenzfall: Auch die letztes Jahr eingefuehrte Hilfsnotation
\nnn wird so verarbeitet, dass zuerst alle Escapes rueckgewandelt
werden und dann der Parser ansetzt, da hat er dann natuerlich keine
Chance mehr, denn die durch die Notation gekennzeichneten Unterschiede
sind da schon laengst wieder nivelliert...

viele Gruesse
Thomas Berger





Mehr Informationen über die Mailingliste Allegro