Мне понадобится помощь с Java здесь... Мне нужно реализовать DFA на Java, который распознает комментарии Java, содержащиеся между /*
и */
. Чтобы начать с простых вещей, предположим, что алфавит DFA: {'/', '*', 'a'}
, поэтому он распознает только эти 3 элемента. Возможные принятые строки:
1) /**/
2) /****/
3) /*a*a**/
4) /*a**/
Он не примет:
1) /*/
2) /**/***/
Для этого я разработал этот метод:
public static boolean scan(String s){
int i = 0, state = 0;
while(i < s.length() && stato >= 0){
final char ch = s.charAt(i++);
switch(state){
case 0:
if(ch == '/')
state = 1;
else
state = -1;
break;
case 1:
if(ch == '*')
state = 2;
else
state = -1;
break;
case 2:
if(ch == 'a')
state = 2;
else if(ch == '/')
state = 3;
else
state = -1;
break;
case 3:
if(ch == '*')
state = 4;
else
state = -1;
break;
case 4:
if(ch == ' ')
state = 4;
else
state = -1;
break;
}
}
System.out.println("State: " + state);
return state == 4;
}
Но при простейшем вводе /**/
status
переменная равна -1
, хотя должно быть 4
. Какие изменения мне следует внести? Надеюсь, вы, ребята, можете мне помочь... Спасибо.