Изменения

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

LR(k)-грамматики

31 байт убрано, 19:40, 4 сентября 2022
м
rollbackEdits.php mass rollback
# Возвращается к первому пункту, пока входная цепочка не закончится.
{| border="0"
|align="left" colspan="4"|
<font size=2>
'''Result''' algorithmLR(w: '''string''')
<font color=green>// curToken {{---}} указатель на первый символ в строке w</font>
'''while''' hasTokens()
curState = top()
'''ifwhen''' (<tex>\mathtt{T}</tex>[curState, curToken] == ) Shift (s ) '''->''' push(curToken) push(s) nextToken() '''else if''' <tex>\mathtt{T}</tex>[curState, curToken] == Reduce (<tex> A \to \beta</tex> ) '''->''' '''for''' j = 1 '''to''' <tex>|\beta |</tex> pop() pop() s = top() push(<tex>A</tex>) push(goto(s, <tex>A</tex>)) Вывод правила: <tex> A \to \beta</tex> Accept '''else->''' '''ifreturn''' <tex>\mathtt{T}</tex>[curState, curToken] == Accept Error '''return''' Accept '->''else''' '''return''' Error </font>|}
Функция <tex>goto</tex> получает состояние и символ грамматики и выдает состояние. Функция <tex>goto</tex>, строящаяся по грамматике <tex>\Gamma</tex>, есть функция переходов детерминированного магазинного автомата, который распознает язык,
* [http://ict.edu.ru/ft/005128//ch7.pdf Терехов Ан.А., Вояковская Н., Булычев Д., Москаль А. Разработка компиляторов на платформе .NET {{---}} Восходящие анализаторы]
* [http://window.edu.ru/resource/974/69974/files/lang_trans.pdf Б.К.Мартыненко. Языки и трансляции. Стр. 198-223]
* [http://www.cs.bham.ac.uk/~hxt/2015/mgs-ll-lr/LL-LR-MGS.pdf Nice slides]
[[Категория: Методы трансляции]]
[[Категория: Восходящий разбор]]
1632
правки

Навигация