Buondì a tutti,
dovrei realizzare un progettino, ma non so da dove cominciare sinceramente.
Ecco qui...

In_pratica_il_linguaggio_permette_di_definire_un_a utoma_a_pila_deterministico_che_accetta_per_pila_v uota._L'assunzione_è_che_il_primo_ stato _ elencato _ sia _ lo _ stato _ iniziale _ e _ che _ l'elenco _ di _ insiemi _ di _ transizioni _ rispetti _ lo _ stesso _ ordine _ utilizzato _ per _ la _ descrizione _dell'insieme_ degli _ stati. _ A_ titolo_ di _ esempio_ la_ seguente_ definizione_ di _ automa _ corrisponde_ all'automa_ che _ permette _ di _ accettare _ il_ linguaggio_anbn_scritto_nel_linguaggio_AP2SL:

Sia_ definito_ il _seguente_linguaggio_AP2SL_ utilizzato_ per_definire_ testualmente _automi _a_pila_deterministici _che_ accettano_ per_pila_
vuota_ (\n_ rappresenta_ la_ nuova_ riga_ o_ il _ ritorno_ carrello_ che_ in_ alcuni _ sistemi _ è_ rappresentata_ invece_ da_ \r, _ mentre_ $_ rappresenta_ il _
simbolo_di_pila_vuota_e_#_rappresenta_il_simbolo_e psilon):
AP2SL_::=__“Automa_:”_<NOME>“\n”{<STATI><COPPIA>“\ n”<TABTR>“.”
COPPIA::=_“,”<STATI><COPPIA>“\n”<TABTR>“:”___|____ “}\n{”<LISTAALFABETO>“}\n{”<LISTASIMBOLIPILA“}”
LISTASIMBOLIPILA_::=_“$”(“,”<SPILA>)+
LISTAALFABETO_::=_<ALFABETO>(“,”<ALFABETO>)*
TABTR_::=_“{”<TRANSIZIONI>“}”
TRANSIZIONI_::=_“(”(<SPILA>|“$”)“,”(<ALFABETO>|“#” )“)_>(”<STATI>“,”<APILA>“);”<TRANSIZIONI>___|
_________________________________“(”(<SPILA>|“$”)“ ,”(<ALFABETO>|“#”)“)_>(”<STATI>“,”<APILA>“)”
NOME_::=_[“A”___“Z”]([“a”___“z”,_“0”___“9”,_“_”])+
STATI_::=_[“1”_“9”]([“0”_“9”])*
ALFABETO_::=_[“a”___“z”]
SPILA_::=_[“A”___“Z”]
APILA_::=_(<SPILA>)*
Il_non_terminale_COPPIA_è_necessario_per_far_si_ch e_non_sia_possibile_definire_un_numero_di_linee_ge nerate_da_“TABTR”_differenti _
dal _ numero _ di _ elementi _ “STATI” _ dunque _ per _ ogni _ stato _ dovrà _ essere _ definito _ un _ insieme _ di _ transizioni _ eventualmente _ vuoto. _ In _
pratica_ciò_corrisponde_ad_una_situazione_del_tipo _anbn,_caratterizzabile_tramite_un_linguaggio_libe ro_da_contesto.
Automa_:_Automa_anbn
{1,2}
{a,b}
{$,N}
{($,a)_>(1,N);(N,a)_>(1,NN);(N,b)_>(2,_)}
{(N,b)_>(2,_)}.
Lo_studente_dovrà_definire_un_file_.jj_che_gli_per metta_di_derivare_un_compilatore_per_programmi_scr itti_in_AP 2SL._In_particolare_un_
programma_ _AP2SL_una_volta_in_esecuzione_dovrà_essere_capace _di_prendere_in_ingresso_una_stringa_di_caratteri_ e_stampare_a_video _
tutti_i_passi_effettuati_dal_corrispondente_automa _a_pila_nell'accettazione_o_non_accettazione_della _stringa_di_ingresso.
Il _ seguente_ potrebbe/dovrebbe _ rappresentare _ l'output _ a _ video _ del _ programma_ java_ ottenuto_ dalla_ compilazione _ per _ l'automa_ di _ cui_
sopra,_sulla_stringa_“aabb”:
Automa:_Automa_anbn
Alfabeto:_a,b
Simboli_di_Pila:_N
Inserisci_la_stringa_di_input:_aabb
STATO:_1_PILA:_$_input:_aabb____AZIONE:_1,N_
STATO:_1_PILA:_N$_input:_abb____AZIONE:_1,NN
STATO:_1_PILA:_NN$_input:_bb____AZIONE:_2,
STATO:_2_PILA:_N$_input:_b____AZIONE:_2,
STATO:_2_PILA:_$_input:____AZIONE:_ACCETTO
Ci_sono_una_serie_di_situazioni_di_errore_nella_de finizione_di_un_programma_AP2SL_che_non_possono_es sere_espresse_e_riconosciute_
direttamente _ attraverso _ la _ corrispondente _ grammatica _ libera _ da _ contesto. _ Tali _ condizione _ di _ errore _ potrebbero _ invece _ essere _
riconosciute _ dal _ compilatore _ aggiungendo _ del _ codice _ opportuno. _ Una _ possibile _ lista _ di _ situazioni _ di _ errore _ da _ poter _ notificare _ al _
programmatore_sono:
1. La_lista_dei_caratteri_dell'alfabeto_potrebbe_cont enere_duplicati,
2. La_lista_dei_simboli_di_pila_potrebbe_contenere_du plicati
3. La_lista_degli_stati_potrebbe_contenere_duplicati
4. La_transizione_incontrata_potrebbe_essere_già_stat a_definita_per_quella_configurazione
5. Il _ primo _ insieme _ di _ transizioni _ (corrispondente _ alle _ transizioni _ per _ lo _ stato _ iniziale) _ non _ contiene _ nessuna _ transizione _ a_
partire_dalla_pila_vuota
6. Lo_stato_definito_per_una_transizione_non_è_tra_gl i_stati_dell'automa
7. Il_carattere_di_input_specificato_in_una_transizio ne_non_fa_parte_dell'alfabeto
8. I_caratteri_di_Pila_specificati_in_una_transizione _non_fanno_parte_dell'alfabeto_di_pila
Dunque_in_definitiva_i_passi_del_progetto_dovrebbe ro_essere_i_seguenti:
1. definizione_di_un_file_.jj_che_riporta_la_grammati ca_del_linguaggio_AP2SL._Attraverso_JavaCC_lo_stud ente_potrà_derivare_una_
classe_ap2slc.java_che_una_volta_compilata_restitu irà_un_compilatore_in_java_per_il_linguaggio_AP2SL ._
2. a_quel_punto_potranno_essere_definiti_file_generic i_nome.aps_ognuno_dei_quali_rappresenterà_la_defin izione_di_un_automa_
a_pila.
3. i_file_.aps_potranno_essere_compilati_con_il_coman do_java_ap2slc_nome.aps_ottenendo_un_file_nome.jav a_che_
rappresenta_il_corrispondente_automa_scritto_nel_l inguaggio_java._Una_volta_compilato_con_il_comando _javac_l'automa_
potrà_essere_lanciato_con_il_comando_java_nome
4. Una_volta_lanciato_l'automa_a_pila_sarà_possibile_ passare_una_stringa_per_verificarne_o_meno_l'appar tenenza_al_linguaggio_
accettato_dall'automa.