Controllo dinamico dell'utente su variabili (lingua incorporato?)
-
26-09-2019 - |
Domanda
Sto creando un pezzo di software (scritto in C #, sarà un'applicazione per Windows) e mi sono imbattuto in questo problema -
Ho un insieme di variabili, e ho bisogno di consentire all'utente di definire una vasta gamma di funzioni matematiche su quelle variabili.
Ma i miei utenti non devono necessariamente avere alcuna conoscenza di programmazione.
Le opzioni che ho prese in considerazione sono:
- creare una sorta di interfaccia grafica per la definizione delle "funzioni" matematiche. Ma questo è molto limitante.
- Implementare un linguaggio incorporato molto semplice, che offrirà la flessibilità, pur rimanendo relativamente facile da capire. Ho guardato Lua, ma il problema con questo è che è praticamente bisogno di avere una conoscenza preventiva nella programmazione. Stavo pensando a qualcosa di più leggibile (in qualche modo simile a SQL), ad esempio "Assegna 3 a X;"
Altre idee sono benvenute.
Sono fondamentalmente cercando il modo migliore per andare qui, sotto l'ipotesi che i miei utenti non hanno alcuna conoscenza di programmazione.
Si noti tuttavia che questa non è la caratteristica principale del mio software, in modo da sto supponendo che se un utente vuole / ha bisogno di utilizzare questa funzione, si prenderà il tempo di guardare il manuale per qualche minuto e imparare come farlo, finché non è troppo complicato.
Grazie, Malki:)
Soluzione
Quello che vogliamo è un linguaggio specifico dominio . Vedo che hai provato Lua e non ha trovato che accettabile -. Darò per scontato che la maggior parte linguaggi di script pre-costruiti sono fuori allora
A seconda della funzione di complessità previsto, vi consiglio di dare un colpo ad attuare una piccola ricorsiva-discesa parser in modo da poter esattamente di specificare la vostra lingua. In questo modo si può realizzare qualcosa di simile:
assign 3 to X
show sin(X * 5)
Se questo è un po 'al di là di ciò che si è disposti a fare, si può ottenere qualche aiuto analisi da una tale libreria come ironia ; questo vi permetterà di concentrarsi sull'uso l'albero di sintassi astratta, piuttosto che giocare con la creazione di token / Lexing per qualche tempo.
Se si vuole, si può anche osservare FUGGIRE , che analizzare e valutare alcune espressioni piuttosto complesse a destra fuori dal cancello.
Altri suggerimenti
ANTLR è una grande parser, se si vuole fare la propria lingua