:: == 0 | 1 | 2: <ціфра3> :: == 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
Таким чином, необхідну граматику можнаописати наступною структурою:
Безліч термінальних символів: {,}, /, 0,1,2,3,4,5,6,7,8,9.
Безліч нетермінальних символів: <фраза>, <дата>, <рік>, <місяць>, <день>, <цифра>, <ціфра1>, <ціфра2>.
Безліч правил виводу R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14. кінцевий автомат число програма
Побудова кінцевого автомата.
Між кінцевими автоматами і автоматними граматиками існує тісний зв'язок: клас мов, що допускаються кінцевими автоматами, збігається з класом мов, породжуваних автоматними граматиками.
Для побудови кінцевого автомата складену граматику шляхом введення додаткових станів треба перетворити до автоматного увазі, в результаті вийде наступна таблиця переходів.
0123456789{}/;#данетдатанетнетнетнетнетнетнетнетнетнетгоднетнетнетнетгодЦг1Цг1Цг1Цг1Цг1Цг1Цг1Цг1Цг1Цг1нетнетнетнетнетЦг1Цг2Цг2Цг2Цг2Цг2Цг2Цг2Цг2Цг2Цг2нетнетнетнетнетЦг2Цг3Цг3Цг3Цг3Цг3Цг3Цг3Цг3Цг3Цг3нетнетнетнетнетЦг3Цг4Цг4Цг4Цг4Цг4Цг4Цг4Цг4Цг4Цг4нетнетнетнетнетЦг4нетнетнетнетнетнетнетнетнетнетнетнетмеснетнетмесМес0Мес1нетнетнетнетнетнетнетнетнетнетнетнетнетМес0нетмесбфевмесбмесммесбмесммесбмесбмесмнетнетнетнетнетМес1месбмесммесбнетнетнетнетнетнетнетнетнетнетнетнетмесбнетнетнетнетнетнетнетнетнетнетнетнетденбнетнетмесмнетнетнетнетнетнетнетнетнетнетнетнетденмнетнетфевнетнетнетнетнетнетнетнетнетнетнетнетденфнетнетденбДб1Дб1Дб1Цф1нетнетнетнетнетнетнетнетнетнетнетДб1Дб2Дб2Дб2Дб2Дб2Дб2Дб2Дб2Дб2Дб2нетнетнетнетнетДб2нетнетнетнетнетнетнетнетнетнетнетразднетнетнетЦф1Дб2Дб2нетнетнетнетнетнетнетнетнетнетнетнетнетденмДб1Дб1Дб1Цф0нетнетнетнетнетнетнетнетнетнетнетЦф0Дб2нетнетнетнетнетнетнетнетнетнетнетнетнетнетразднетнетнетнетнетнетнетнетнетнетнетнетнетдатададенфДб1Дб1Цф3нетнетнетнетнетнетнетнетнетнетнетнетЦф3Дб2Дб2Дб2Дб2Дб2Дб2Дб2Дб2нетнетнетнетнетнетнет
Програмне моделювання роботи кінцевого автомата.
# include «stdafx.h»
# include «iostream.h»
# include «stdio.h»
# include «conio.h» main ()
{int i, j, kol, tsost, slsost, tsymb; tabl [23] [15]={{0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0}, / / ??da
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, / / ??net
{1,1,1,1,1,1,1,1,1,1,3,1,1,1,1}, / / ??data ??p>
{4,4,4,4,4,4,4,4,4,4,1,1,1,1,1}, / / ??god
{5,5,5,5,5,5,5,5,5,5,1,1,1,1,1}, / / ??cg1
{6,6,6,6,6,6,6,6,6,6,1,1,1,1,1}, / / ??cg2
{7,7,7,7,7,7,7,7,7,7,1,1,1,1,1}, / / ??cg3
{1,1,1,1,1,1,1,1,1,1,1,1,8,1,1}, / / ??cg4
{9,10,1,1,1,1,1,1,1,1,1,1,1,1,1}, / / ??mes
{1,11,13,11,12,11,12,11,12,11,1,1,1,1,1}, / / ??mes0
{11,12,11,1,1,1,1,1,1,1,1,1,1,1,1}, / / ??mes1
{1,1,1,1,1,1,1,1,1,1,1,1,14,1,1}, / / ??mesb
{1,1,1,1,1,1,1,1,1,1,1,1,18,1,1}, / / ??mesm
{1,1,1,1,1,1,1,1,1,1,1,1,21,1,1}, / / ??feb
{15,15,15,17,1,1,1,1,1,1,1,1,1,1,1}, / / ??denb
{16,16,16,16,16,16,16,16,16,16,1,1,1,1,1}, / / ??db1
{1,1,1,1,1,1,1,1,1,1,1,20,1,1,1}, / / ...