Mam elastyczne pytanie. Nie rozumiem, co to jest polecenie BEGIN (INITIAL). Myślę, że jest to sposób, aby przejść do początku aktualnego stanu, w którym już jestem, ale nie jestem pewien, czy poprawnie to zrozumiałem. Czy możesz mi wyjaśnić w prosty sposób, co robi BEGIN (INITIAL)?
Z góry dziękuję!
Odpowiedzi:
4 dla odpowiedzi № 1Przywraca stan początkowy. Powiedz, że masz coś takiego:
%x FOO
%%
[A-Z] { BEGIN(FOO); }
. {}
<FOO>. {}
<FOO>n { BEGIN(INITIAL); }
%%
Tutaj stan początkowy, tj. stan INITIAL to stan, który pasuje do dwóch pierwszych wzorców, tj. stan „domyślny”. Jeśli przeczytasz jakąkolwiek wielką literę, skończysz w stanie FOO. W stanie FOO, jeśli napotkasz nowy wiersz, skończysz w stanie początkowym, który jest ponownie stanem, który pasuje do dwóch pierwszych reguł.