Advertisement
Guest User

cazzo

a guest
Sep 17th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. /*
  2.  
  3. Progettare e implementare un DFA con alfabeto {/, * , a} che riconosca il linguag-
  4. gio di “commenti” delimitati da /* (all’inizio) e *\/ (alla fine): cioè l’automa deve accettare le
  5. stringhe che contengono almeno 4 caratteri che iniziano con /* , che finiscono con *\/, e che con-
  6. tengono una sola occorrenza della sequenza *\/, quella finale (dove l’asterisco della sequenza *\/
  7. non deve essere in comune con quello della sequenza /* all’inizio, ). Quindi l’automa deve ac-
  8. cettare le stringhe “\/****\/”, “\/*a*a*\/”, “\/*a\/**\/”, “\/**a\/\/\/a\/a**\/”, “\/**\/” e “\/*\/*\/”
  9. ma non “\/*\/”, oppure “\/**\/***\/”.
  10. ----------------------------------------------------------------------------*/
  11.  
  12. public class Esercizio1_10 {
  13. public static boolean scan(String s) {
  14. int state = 0, i = 0;
  15. while(state>=0 && i<s.length()){
  16. final char c=s.charAt(i++);
  17. switch(state){
  18. case 0:
  19. if(c=='/'){
  20. state = 1;
  21. }else{
  22. state=-1;
  23. }
  24. break;
  25. case 1:
  26. if(c=='*'){
  27. state=2;
  28. }else{
  29. state= -1;
  30. }
  31. break;
  32.  
  33. case 2:
  34. if(c=='*'){
  35. state=3;
  36. }else if(c=='a' || c=='/'){
  37. state = 2;
  38. }else{
  39. state = -1;
  40. }
  41. break;
  42.  
  43. case 3:
  44. if(c=='/'){
  45. state=4; //finale
  46. }else if(c=='*'){
  47. state=3;
  48. }else if(c=='a'){
  49. state=2;
  50. }else{
  51. state = -1;
  52. }
  53. break;
  54.  
  55. case 4:
  56. state=-1;
  57. break;
  58.  
  59.  
  60. }
  61. }
  62. return (state==4);
  63. }
  64. public static void main(String [] args){
  65. System.out.println(scan(args[0])? "La stringa è accettata" : "La stringa non è accettata");
  66. //System.out.println(args[0]);
  67. }
  68. ///**/ è un carattere speciale che rimanda alle applicazioni quindi va inserita fra \ o fra " "
  69. //es \/\*aa\*\/ = /*aa*/
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement