Skip to content

Latest commit

 

History

History

lab2

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Так как в исходной грамматике синтаксиса присутствовала левая рекурсия, что осложняло чтение, парсер был написан написан по следующей грамматике:

<regex> ::= <term> '|' <regex> | <term>
<term> ::= <factor> | <factor><factor> | <factor> '#' <factor>
<factor> ::= <base> | <base> '*' | <base> '+' 
<base> ::= <char> | '(' <regex> ')'

P.S.оригинал: https://matt.might.net/articles/parsing-regex-with-recursive-descent/

Могут быть неточности в изложении мысли формальной записью

Парсер написан по методу Александра Владимировича (ваши замечания по коду на конференции я слышал, но до реализации руки не дошли). Да и мой парсер, похоже, получился далеким от "чистого"...

https://groups.google.com/g/metacomputation-ru/c/mFlLMjYNSLg