Изменения

Перейти к: навигация, поиск

Регулярная аппроксимация КС-языков

69 байт добавлено, 22:57, 19 ноября 2016
Псевдокод
===Псевдокод===
<tex>Q</tex> {{---}} множество состояний ДКА.
 
<tex>\Delta</tex> {{---}} множество переходов ДКА.
 
<tex>T</tex> {{---}} множество допускающих состояний.
'''function''' createFA(G) <font color=green>// <tex> G = \langle N, \Sigma, P, S \rangle</tex> </font>
<tex>\mathtt{Q} \leftarrow \varnothing</tex>
<tex>\Delta \leftarrow \varnothing </tex>
'''function''' makeFA (q0,a,q1)
'''if''' a == <tex> \varepsilon </tex> || a <tex> \in \Sigma</tex> <font color=green>// пришли в лист дерева разбора</font>
<tex> \Delta = \Delta \cup \{(q_0,a,q_1)\} </tex>
'''return'''
makeFA (<tex>q_D, X_1 \cdots X_m, q_C</tex>)
<tex> \Delta = \Delta \cup \{(q_a,\varepsilon,q_1)\} </tex>
'''else''' <font color=green>// рекурсивный нетерминал rihgt right или cyclic</font>
'''foreach''' C '''in''' <tex>N_i</tex> '''where''' <tex> C \rightarrow X_1...X_m \land X_1,...X_m \neq N_i </tex>
makeFA (<tex>q_C, X_1 \cdots X_m, q_1</tex>)
Анонимный участник

Навигация