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:)

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top