Автор работы: Пользователь скрыл имя, 26 Марта 2014 в 16:17, реферат
Шекті автоматтардың формальді анықтамасы
Детерминирлі шекті автомат
Шекті автоматты Мур диаграммалары арқылы бейнелеу.
Трансляцияның формальды модельдері
БНФ-грамматика немесе контекстілі еркін грамматика
БНФ-грамматиканың синтаксисі
Сонымен автомат жұмысы кезектегі енуші символды (тізбекті ) оқып, сәйкес өту ережесін қолданып, басқа жағдайға ауысу (өту).
1 |
2 |
3 | |
<әріп> |
2 |
2 |
- |
<цфр> |
4 |
2 |
- |
<соңы> |
4 |
3 |
- |
<әйтпесе> |
4 |
- |
- |
Трансляцияның формальді модельдері бұрын қарастырғандай синтаксистік құрылымдарды оқуға қатысты компиляция теориясының бөлімі стандартты болып келеді және де контексті еркін тілдер теориясына негізделеді. Программалау тілінің синтаксистік формальді анықталуы әдетте грамматика деп аталады.
Грамматика программалау тілдің анықталуы үшін мүмкін символдар тізбегін анықтайтын ережелер жиынтығынан тұрады. Формальді грамматика дегеніміз қатаң белгілеулер жүйесінен тұратын грамматика, компиляциялау технологиясында грамматиканың 2 класы қолданылады.
БНФ грамматика. Ағылшын тіліндегі сөйлем құрылымын қарастыра отырып оның категориялары тілдегі қарапайым хабарлас сөйлем мынадай сөйлемнен тұрады:
Бастауыш |етістік| толықтауыш //The gіrl (runs) home.
Әрбір категория өз кезегінде ішкі категорияларға бөлінуі мүмкін. Мыс: жоғарыдағы құрылымда бастауыш артикль және зат есімнен тұрады. Олай болса құрылым былай жазылуы мүмкін.
артикль |зат есім| етістік | толықтауыш
Бұдан басқа сұраулы сөйлемдердің де құрылымы былай жазылады:
Кәмекші етістік |бастауыш |баяндауыш
Мысалы: dіd| the gіrl| run home?
Келтірілген сөйлемдерді қандай да бір ереженің жиынтығы арүылы сипатттау мүмкін. Яғни біз сөйлемнің хабарлы не сұраулы болатынын айта аламыз немесе оны былай жазуға болады: <сөйлем>::=<хабарлы>| <сұраулы>. Мұндағы :: = белгісі – аталған категорияның белгілерінің оң жағындағы ішкі категорияға бөліну мүмкіндігін білдіреді. Яғни келтірілген құрылымды былайша оқиды. Сөйлемдердің келесі тармақталуы былайша анықталады:
<хабарлы>::=<бастауыш><
<бастауыш>::=<артикль><зат
<сұраулы>::= <қосымша етістік><бастауыш><
осылайша, арнайы жазуды бнф-бэкустың нормал формалары деп атады. Оны 50-ші жылдардың соңында algol тілінің синтаксистік анықталуы ретінде пайдаланып жария етті. Шамамен осы жылдары ноам хомский осыған ұқсас грамматикалық форманы ұсынып, оны контекстілі-еркін грамматика деп атады. Ол табиғи тілдердің синтаксисін келтіру үшін арналды. БНФ және контекстілі еркін грамматика формалары мүмкіндіктері жағынан эквивалентті болып келеді. Айырмашылығы - олардың белгілеулер жүйесінде ғана, сондыңтан синтаксис мәселен талқылау барысында БНФ грамматика және контексті еркін грамматика терминдері өзара бірін-бірі ауыстыратын сөздер ретінде қолданылады.
БНФ грамматиканың синтаксисі. БНФ грамматика программалау тілдерін анықтайтын грамматика ережелерінің аяқталған жиынтығынан тұрады. Бұл ережелерді қарастырмас бұрын тіл түсінігіне тоқталайық. Синтаксис мәндермен емес тікелей формалармен жұмыс істейтін болғандыңтан синтаксис тұрғысынан алып қарағанда программалау тілі әрқайсысы символдар жиынтығынан тұратын дұрыс программаның жиынтығы. Семантикаға қатысты синтаксисті дұрыс программа ешқандай мәнге ие болмауы мүмкін жағдайда мысалдарға қайта оралсақ, онда келесі сөйлем мына ережелерге сәйкес келеді:
бастауыш | етістік | толықтауыш
Бірақ оның ешқандай мағынасы жоқ. Программалық тілінің синтаксисін алып қарайтын болсақ, онда біз синтаксистік тізбектердің мұнын да , әрі абстракцияланатынына көз жеткіземіз және тілді ұзындығы шектелген символдар байланыстыратын жиынтығы ретінде анықтауға болады. Бұл анықтау негізінде келесі аталғандарды тіл деп қарастыруға болады. Бұл анықтау негізінде келесі аталғандарды тіл деп қарастыруға болады.
Мұнда әрбір а элементі кез келген тізбекте b элементінен алдын орналасады. Бұл тілдің құрылымына мұқият зер сала отырып, олардың анықталуының жеткіліксіз екеніне кәз жеткізуге болады. Бұл ережелер тілде қандай байланыстарды қолдануға болатындығын анықтайды. Қарапайым жаұдайда грамматикалық ереже жай ғана тіл. Мысалы: <цифр>:: =0|1|2|3|4|5|6|7|8|9. Бұл ереже элементтерді қарапайым тізбелеу арүылы (0..9) тілді анықтайды. Бұл грамматикалық ереженің оқылуы 0 не 1 және 2 немесе 9 цифр сәзі. Синтаксистік категория немесе терминалды емес сим-р деп аталады. Ол осы синтаксисті ереже арүылы анықтайтын тілдің атаулы үызметін атқарады. Тілдегі байланыстарды құрастыратын символдар терминді символдар деп аталады.
Көбіне :: = белгісі мына белгісімен ауысып тұрады. Әсіресе егер жалғыз әріптер түрінде берілсе, осы символдар пайдаланылуы қажет. Мысалы, <Х>:: =<B>|<С> мына ереже түрінде Х B|С жазылуы мүмкін. Терминалды емес символдар жиынын анықтап болған соқ әлдеқайда байланыстарды сипаттау үшін оларды пайдалануға болады.
Мысалы: <шартты оператор>:: = іf <логикалық оператор> then <оператор> else <оператор> іf <логикалық өрнек> then <оператор> шартты оператор құрылымын <логикалық өрнек> және <оператор> тер-ді. Келтірілетін ереже шартты оператордың екі нұсқасын шығарады. Әрбір нұсқа итералды және синтаксисті потенциалды біріктірілуі түрде анықталады. Ережеде синтаксисті категория көрсетілген жағдайда оның орнына осы категория арқылы анықталатын тіл символдың кез келген байланысу ережесі болады деген сөз.
Информация о работе Детерминантты шекті автоматтар. Мур диаграммасы