Forum: PC-Programmierung Jvascript String umwandeln in "brauchbare" Formel


von Baeri B. (baeri)


Lesenswert?

Hallo,

ich habe in Javascript einen String, welcher etwa "so" ausschaut:

"( [length] * [width] ) * [weight]"
ODER
"( [length] * [width] ) - [flaeche2]"
...

das sind divere "formeln" welche in einer Datenbank abgespeichert 
werden, welche dan später für die "berechnung" gebraucht werden...

die werte in den "eckigen" klammern sind variablen... so steht hinter

eval( "length" )

eine länge...

die "anfänge" sind die einfachen Mathe operatoren
+-*/ klammern

Später denke ich auch über Exponentialfunktionen, Wurzeln... nach

die 1. Frage wäre, ist es "so" intelligent die Formel abzuspeichern?
die 2. (wichtigere Frage), WIE mach ich die Formel jetzt nutzbar?

vielen Dank für jeden Tipp


da bin ich mit einem Kopf hinterm Brett rumgelaufen...:
eval ist ja schon die lösung ... vergesst die frage...

: Bearbeitet durch User
von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Woher kommen die Werte, Die Du mit dann an eval verfütterst?

Dir ist bekannt, daß man NIE eine Benutzereingabe an eval übergibt, da 
so ein unbekannter Code von Dir/Deinem Programm ausgeführt wird.

Mit eval kann man viel machen, die Schutzmaßnahmen, Die man treffen muß, 
stehen aber in keinem Verhältnis.

MfG

von Planlos (Gast)


Lesenswert?

Der umständliche Weg "nach Lehrbuch":

Du schreibst dir eine Grammatik für deine Ausdrücke, und lässt einen 
Parser-Generator darauf los (für JS z.b. https://pegjs.org/)

Auch halbwegs nach Lehrbuch, weniger Fremdcode, mehr eigener: Recursive 
Descend parser runtertippen. "Scanner-Teil" durch Regexp ersetzten.


Heute aktueller Weg: Youtube-Video zum Thema anschauen, fertiges npm 
modul einbinden. :/

von Frindal (Gast)


Lesenswert?

Ist das nicht bereits in JavaScript eingebaut?

https://www.w3schools.com/jsref/jsref_eval.asp

von Planlos (Gast)


Lesenswert?

Frindal schrieb:
> Ist das nicht bereits in JavaScript eingebaut?
>
> https://www.w3schools.com/jsref/jsref_eval.asp

Nur im Browser-Javascript. Ist da unproblematisch(er), weil der Browser 
sowieso alles sandboxed, und der "böse" Code entweder vom Server oder 
vom User kommt, welche beide auch ohne "eval" mehr Rechte haben.

Unter nodejs wäre das Äquivalent "vm.Script"&co., wobei ich mir nicht 
sicher bin, ob man dem wirklich untrusted Code anvertrauen kann...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.