Scrivere un semplice validatore di codice

1

So che i linguaggi di programmazione possono essere definiti in EBNF che può essere convertito in espressioni regolari. In questo momento sto lavorando a un interprete BASIC molto semplice per un progetto. Il codice deve essere inserito in una GUI che dovrebbe convalidare la sintassi per trasferire in seguito il codice su un sistema incorporato dove viene eseguito.

Stavo cercando su Google un articolo o un tutorial su come scrivere un validatore per questo lavoro, ma non riuscivo davvero a trovare una cosa del genere. Sta solo definendo le espressioni regolari e provate ad abbinarle?

Nota: la parte della GUI è scritta in Java mentre il codice incorporato è scritto in C ++.

    
posta clambake 23.07.2014 - 07:34
fonte

2 risposte

5

La premessa iniziale che una descrizione della lingua EBNF può essere convertita in espressioni regolari non è corretta. Il set di lingue che possono essere analizzate con espressioni regolari è un sottoinsieme del set di lingue che può essere descritto in EBNF.
Ad esempio, è impossibile scrivere un'espressione regolare per verificare se le parentesi nidificate sono bilanciate.

Il modo migliore per convalidare la tua lingua è scrivere un parser per questo. Esistono anche generatori di parser (a-la yacc / bison) per Java.

    
risposta data 23.07.2014 - 09:04
fonte
0

La convalida del codice non dovrebbe essere solo syntactical , ma soprattutto dovrebbe prendere alcuni dei semantica , che è molto più difficile. Leggi informazioni su analisi del programma statico , tipo di inferenza , ecc.

Per il tuo progetto, hai considerato di incorporare un interprete esistente (ad esempio guile o Lua , etc ...) all'interno del tuo programma?

Se vuoi scrivere un interprete, leggi lingue specifiche del dominio . Vedi anche questa risposta a una domanda correlata.

    
risposta data 23.07.2014 - 10:40
fonte

Leggi altre domande sui tag