Контекстно-зависимые и тьюринг-полные формальные языки
Знаете ли вы о каких-либо, которые могут указывать контекстно-зависимую грамматику? Например * указатель символа / разрешение неоднозначности умножения. Я ищу формальный язык, который позволит разрешить такие неясности. Язык, который я ищу, должен быть четко указан.
Редактировать: я ищу что-то вроде BNF, но должен быть контекстно-зависимым, на самом деле это должно быть в состоянии решить проблему висячей еще.
1 ответ
BNF может разрешать неопределенности такого рода, вводя дополнительные правила. Например, в спецификации языка Java вы найдете:
IfThenStatement:
if ( Expression ) Statement
IfThenElseStatement:
if ( Expression ) StatementNoShortIf else Statement
StatementNoShortIf:
IfThenElseStatementNoShortIf
...
IfThenElseStatementNoShortIf:
if ( Expression ) StatementNoShortIf else StatementNoShortIf
...где StatementNoShortIf
это Statement
это не может заканчиваться "если", которое не имеет "еще". Таким образом, если я разбираю if(a) if(b) c(); else d();
тогда единственный вариант - иметь if(b) c(); else d();
связываются с StatementNoShortIf
,