Implementazione di un interprete di base - dovrei imparare le espressioni regolari? [chiuso]

-2

Per divertimento e per pratica, sto pensando di implementare un linguaggio di programmazione molto semplice da eseguire su un semplice interprete scritto in Java.

La mia domanda è questa:

È necessario "conoscere" le espressioni regolari durante la progettazione di un interprete, per analizzare il testo? Devo imparare questo argomento prima di iniziare a implementare l'interprete?

O è sufficiente scorrere semplicemente il testo, suddividere in stringhe, ecc., cioè eseguire "l'analisi di base" senza espressioni regolari?

    
posta Aviv Cohn 27.04.2014 - 19:05
fonte

2 risposte

5

L'analisi corrente di solito non verrebbe eseguita con espressioni regolari o con codice equivalente ad alcune espressioni regolari. Li useresti per lessicarli, ad esempio per identificare numeri, nomi di variabili, segni di punteggiatura, parole chiave e così via senza analizzarli ulteriormente.

Non è richiesto in realtà utilizzare espressioni regolari in un lexer. Ma sono uno strumento molto utile per descrivere e visualizzare la sintassi. Inoltre, poiché le espressioni regolari sono fondamentalmente parser molto primitivi, l'apprendimento dei concetti che li circondano (ad esempio la ripetizione e la scelta) ti avvantaggerà quando ti volti verso l'analisi, poiché alcuni concetti di analisi sono analoghi a (benché più ampi di) concetti regex.

C'è anche il fatto che puoi usare espressioni regolari per molte attività oltre al lexing; molte attività di elaborazione delle stringhe comuni possono essere facilmente risolte con il loro utilizzo. Quindi, in sintesi: potreste essere in grado di fare a meno, ma è raccomandato. Non devi necessariamente imparare in anticipo , puoi provare a impararli mentre implementi il lexer.

    
risposta data 27.04.2014 - 19:19
fonte
0

Credo che non dovresti usare Espressioni regolari finché non arrivi al punto - nel tuo lexer o parser, dove puoi trattare solo con Tipo-3 di < a href="http://en.wikipedia.org/wiki/Chomsky_hierarchy"> Gerarchia di Chomsky .

Come @ Sk-logic menzionato nei commenti, l'analisi di un linguaggio non regolare con espressioni regolari non funzionerebbe, semplicemente a causa della mancanza di ricorsività nelle espressioni regolari - secondo me.

L'analisi di qualcosa come Selettori CSS potrebbe essere una buona idea per le espressioni regolari, tuttavia lavorare su qualcosa al di sopra del Tipo-3 ti metterebbe nei guai a un certo punto, direi.

    
risposta data 05.05.2014 - 14:45
fonte

Leggi altre domande sui tag