Sie können den Parser fragen:
%Vor% Es gibt jedoch ein Problem: Dies funktioniert nur, solange variable2
ein Bezeichner ist (damit er als Methodenname verwendet werden kann). Mit
bereits der Parser schlägt fehl:
%Vor%Klammern sind wirklich Ihr einziger Weg (*):
%Vor% (*) es sei denn, Sie machen 2
zu einem Bezeichner, indem Sie ihn mit Backticks verwenden
... nein, vielleicht nicht.
Soweit ich weiß, ist es im Moment unmöglich, es so zu implementieren, wie Sie es wollen (ich würde mich freuen, dass es sich als falsch erwiesen hat). Ich sah mich auch diesem Problem gegenüber, als ich mein kleines DSL für die Injektion erstellte. Aber ich habe erkannt, dass, selbst wenn Sie nicht 2 Variablen zwischen 2 Bezeichnern haben können, Sie immer noch drei Bezeichner zwischen ihnen haben können. Es sieht so aus:
%Vor%ist das gleiche wie:
%Vor%Damit konnte ich mir ein sehr schönes DSL vorstellen, das so aussieht:
%Vor%In dieser Spezifikation finden Sie weitere Anwendungsbeispiele:
Die Implementierung finden Sie hier:
Ich habe die Klassen ByWord
und IdentifiedWord
als Methodenargumente verwendet. Zum Beispiel:
Dies lässt die Möglichkeit, dass Benutzer der Bibliothek ByWorld
-Klasse erweitern und generell ihre eigenen ByWorld
Implementierungen bereitstellen können. Wenn ich jetzt darüber nachdenke, finde ich es nicht sehr nett. Besser wäre es, Singelton-Objekte für die konstanten Wörter zu erstellen und dann ihren Typ wie folgt zu verwenden:
Dies beschränkt das Argument im Allgemeinen auf nur eine mögliche by
-Wort-Instanz.
Nun, Sie können zwei aufeinanderfolgende Bezeichner haben, wenn der letzte ein unärer Operator ist:
%Vor%wird als
geparst %Vor%Beachten Sie, dass unäre Funktionen nur sein können! ~ und -
Wenn es Ihnen nichts ausmacht, dass Ihr letzter Variablenname als String behandelt wird (zB können Sie später den Wert von einer Map oder dem Interpreter selbst ), können Sie folgende Dynamiken verwenden:
%Vor%ergibt die Zeichenfolge "v2".
Tags und Links scala