Oberflächliches Suchen hat mir kein Ergebnis gebracht. Weiß jemand zufällig, ob die Formeln, die man bei Foundry zum Würfeln verwenden kann, irgendwo formal als
(E)BNF definiert sind?
Ich habe hier mit der
Dokumentation als Beispiel einen Ausschnitt formalisiert:
formula = expression [comment].
expression = term {("+" | "-") term}.
term = factor {("*" | "/") factor}.
factor = dice | constant.
dice = [number] "d" [faces] [label].
number = constant.
faces = constant.
label = "[" {any} "]"
constant = digit {digit}.
digit = "0" | ... | "9".
comment = "#" {any}.
Das ganze ist aber komplizierter, weil z.B. `number` und `faces` auch wieder Würfelausdrücke in Klammern sein können und wohl komplette Ausdrücke mit Punkt- und Strichrechnung. Ob wohl auch modulo als Operation neben Division zugelassen ist? Die Dokumentation sagt außerdem, dass alles von JavaScripts `Math`-Objekt als Funktionen zugelassen ist. Ob sich da jemand Gedanken gemacht hat, wie die Zahlen `NaN` und `Infinity` mit dem Rest zusammenspielen? Oder das man dann ja auch `Math.random()` benutzen können müsste?
Ein weiteres Thema sind Modifikator wie "reroll", "explode", "keep", usw.
Schließlich kann man noch einmal mit `{,}` einzelne Ausdrücke gruppieren und auch hier wieder Modifikatoren anwenden.
Und mit `@name` kann man auch Variablen in die Formeln einbauen.
PS: Wenn jemand statt Foundry eine bessere Alternative kennt, bin ich auch interessiert. Ich möchte mich idealerweise an einen Standard halten.