Size: a a a

Compiler Development

2021 January 15

s

suhr in Compiler Development
Ну BNF всё-таки приятнее читать, чем кашу из символов.
источник

AK

Andrei Kurosh in Compiler Development
suhr
Ну BNF всё-таки приятнее читать, чем кашу из символов.
По крайней мере в EBNF повторение без рекурсии вполне есть
источник

л

лиза in Compiler Development
Alexander Tchitchigin
/(0{n}1{m}){k}/ 🤷‍♀
так там любое число может быть
источник

BD

Berkus Decker in Compiler Development
лиза
так там любое число может быть
так оно и  тут может быть любое

все зависит от ваших n, m и k :)
источник

AT

Alexander Tchitchigi... in Compiler Development
лиза
так там любое число может быть
Но оно фиксировано на момент создания регулярки, так что это просто тупо повторение литерала.
источник

AT

Alexander Tchitchigi... in Compiler Development
Регулярные выражения не поддерживают никаких параметров, если что. Там всё фиксировано на момент записи (компиляции) выражения.
источник

л

лиза in Compiler Development
ну в смысле моя регулярка должна ведь искать последовательности такие 00110011, 010101, 011011, ну то есть чет я не особо понимаю, если я запишу просто {n} в фигурных скобках, то оно будет всегда искать какое-то фиксированное n, как я понимаю, но язык ведь подразумевает, что там может быть любое n.
источник

AT

Alexander Tchitchigi... in Compiler Development
лиза
ну в смысле моя регулярка должна ведь искать последовательности такие 00110011, 010101, 011011, ну то есть чет я не особо понимаю, если я запишу просто {n} в фигурных скобках, то оно будет всегда искать какое-то фиксированное n, как я понимаю, но язык ведь подразумевает, что там может быть любое n.
С одинаковым произвольным количеством групп — это уже не регулярный, а push-down язык. Это ж как матчинг скобок. 🤷‍♀️
источник

AT

Alexander Tchitchigi... in Compiler Development
С неодинаковым — /(0+1+)+/.
источник

л

лиза in Compiler Development
вообще вот задание, тут вот написано, что нужна именно регулярка, странно короче
источник

BD

Berkus Decker in Compiler Development
В регулярках вроде бы нельзя выразить “столько же единичек сколько  было ноликов”
источник

AT

Alexander Tchitchigi... in Compiler Development
Berkus Decker
В регулярках вроде бы нельзя выразить “столько же единичек сколько  было ноликов”
Совершенно точно нельзя. Для этого уже автомат с магмзинной памятью понадобится.
источник

AK

Andrei Kurosh in Compiler Development
Alexander Tchitchigin
С неодинаковым — /(0+1+)+/.
может поможет /(0+1+)\\1+/ - так хотя бы паттерн будет одинаковым
источник

AT

Alexander Tchitchigi... in Compiler Development
лиза
вообще вот задание, тут вот написано, что нужна именно регулярка, странно короче
Так в задании написано не то, что Вы спросили! 😃
источник

л

лиза in Compiler Development
ну там в середине есть этот фрагмент
источник

AK

Andrei Kurosh in Compiler Development
ну и кстати в различных рантаймах существуют расширения регулярок, позволяющие творить в них вакханалию: например, в .net есть так называемые balancing groups, которые как раз позволяют парсить вложенные скобки

https://www.regular-expressions.info/balancing.html
источник

л

лиза in Compiler Development
все равно ведь нужно его как-то впихнуть во всю эту регулярку
источник

л

лиза in Compiler Development
лиза
ну там в середине есть этот фрагмент
он просто с четным числом разрядов, но это ведь не столь важно
источник

AT

Alexander Tchitchigi... in Compiler Development
лиза
все равно ведь нужно его как-то впихнуть во всю эту регулярку
Нет. Там написано, что регулярка должна парсить строки из символов {0, 1, 7, 8, E, F}.
источник

л

лиза in Compiler Development
а, об этом тоже уже потом можно подумать, я не дочитала до конца, какие там системы счисления) тот фрагмент с повторяющимися фрагментами все равно не оч понятно, как сделать одной только регуляркой
источник