Analizzatore identificatori con bnf

di il
3 risposte

Analizzatore identificatori con bnf

Ciao a tutti mi servirebbe una mano con questo programma...sinceramente ho cercato anche online informazioni relative a questo, a non ho trovato niente e non so da dove iniziare, qualcuno mi può aiutare a fare questo programma o almeno a capire come funziona un programma che utilizzi la sintassi bnf?

Si consideri il linguaggio degli identificatori del C++ descritto dalla seguente grammatica BNF:
<id> ::= <lett> <id_resto>
<id_resto> ::= <lett> <id_resto> | <cifra> <id_resto> | e
<lett> ::= a | b | … | z | A | B | … | Z | _ (underscore)
<cifra> ::= 0 | 1 | … | 9
dove e rappresenta la stringa vuota.
(a) Realizzare una funzione booleana di nome id che preso come suo parametro una stringa s restituisce come suo risultato true se la stringa appartiene al linguaggio generato a partire da <id>, false altrimenti. La funzione id utilizza (obbligatoriamente) una funzione boolena id_resto che, preso come suo parametro una stringa r, restituisce come suo risultato true se r appartiene al linguaggio generato a partire da <id_resto>, false altrimenti. La funzione id_resto deve essere obbligatoriamente definita in modo ricorsivo. SUGG. Passare come parametro della funzione id_resto, oltre alla stringa s, anche l’indice da cui iniziare l’analisi della stringa … (b) Scrivere un programma principale che legge da std input una stringa s, terminata da a capo (lungh max. 100 caratteri), e quindi determina, utilizzando (obbligatoriamente) la funzione id realizzata al punto (a), se s rappresenta o no un identificatore corretto. N.B. Utilizzare soltanto stringhe “tipo C”. Non utilizzare variabili globali.


ESEMPI ESECUZIONE Inserisci una stringa terminata da a capo:
-a
Errore
Inserisci una stringa terminata da a capo:
a1b2
Identificatore corretto
Inserisci una stringa terminata da a capo:
1ab
Errore
Inserisci una stringa terminata da a capo:
a
Identificatore corretto Inserisci una stringa terminata da a capo:
1
Errore
Inserisci una stringa terminata da a capo:
_12
Identificatore corretto

3 Risposte

  • Re: Analizzatore identificatori con bnf

    Che idee hai tu per iniziare?
  • Re: Analizzatore identificatori con bnf

    0) NON SI GUARDA ONLINE!

    1) per sapere come funziona il BNF (Backus-Naur Form) DEVI sapere come funzionano le ESPRESSIONI REGOLARI e le GRAMMATICHE FORMALI (che possono essere considerate come una generalizzazione delle RE).

    Un modo semplice per implementare una grammatica semplice come questa e' mediante un "parser ricorsivo discendente", che poi e' ESATTAMENTE quello che viene richiesto dal testo.

    Spiegare che cosa e' una espressione regolare o una grammatica formale mediante post la vedo dura. Servono concetti di automa a stati, automa a stati con stack, ecc..
    MOOLTO meglio usare un libro.

    Quindi, E' MOLTO STRANO che ti si proponga un esercizio del genere SENZA aver introdotto gli argomenti fondamentali.
  • Re: Analizzatore identificatori con bnf

    migliorabile ha scritto:


    Quindi, E' MOLTO STRANO che ti si proponga un esercizio del genere SENZA aver introdotto gli argomenti fondamentali.
    Concordo con questa conclusione di migliorabile
Devi accedere o registrarti per scrivere nel forum
3 risposte