Size: a a a

2020 April 20

ВВ

Вадим Великодный in pro.algorithms
vehlwn
Я про PEG  грамматику (разбирающую выражения).
А, ОК. Подумал, РВ — это регулярные выражения.
источник

v

vehlwn in pro.algorithms
Вадим Великодный
А, ОК. Подумал, РВ — это регулярные выражения.
parser parser(R"(
   EXPRESSION       <-  TERM (TERM_OPERATOR TERM)*
   TERM             <-  FACTOR (FACTOR_OPERATOR FACTOR)*
   FACTOR           <-  NUMBER / '(' EXPRESSION ')'

   TERM_OPERATOR    <-  < [-+] >
   FACTOR_OPERATOR  <-  < [/*] >
   NUMBER           <-  < [0-9]+ >

   %whitespace      <-  [ \t\r\n]*
)");

Ее можно редуцировать, оставив только скобки?
источник

v

vehlwn in pro.algorithms
Вадим Великодный
А, ОК. Подумал, РВ — это регулярные выражения.
PEG использует кванторы и группы, как в регулярках.
источник

ВВ

Вадим Великодный in pro.algorithms
Так пойдёт?

EXPR  <- ('(' EXPR ')')*
источник

v

vehlwn in pro.algorithms
Вадим Великодный
Так пойдёт?

EXPR  <- ('(' EXPR ')')*
источник

ВВ

Вадим Великодный in pro.algorithms
О, прикольная штука!
источник

v

vehlwn in pro.algorithms
Вадим Великодный
О, прикольная штука!
источник

ВВ

Вадим Великодный in pro.algorithms
Спасибо за ссылки! Давно с грамматиками не сталкивался, и как раз сегодня днём думал, что бы такого поковырять. А с этой библиотекой будет интереснее. :)
источник

NK

ID:1279289853 in pro.algorithms
источник

A

Arina in pro.algorithms
кто-нибудь может подсказать,как выразить функции остаток от деление и целую часть от деления через базис Клини?
источник

i

igor in pro.algorithms
 ‌‌Gleb Pilipets
Ребят, а у меня такая просьба. Можете помочь понять решение.

Есть строка, которая состоит из '(', ')', '*' и нужно определить валидная ли расстановка скобок. Звёздочки можно рассматривать как пустота, или открывающаяся скобка, или закрывающаяся.

(*)(      -> invalid
(()(**) -> valid
(*()))   -> valid


Решение такое.
Пройдемся по массиву с лева направо и на каждом шаге проверяем, валидная ли расстановка скобок, если считать каждую звёздочку как левую.
Потом справа на лево, проверяя на каждом шаге, валидная ли перестановка, если считать * как правая.

Если до этого мы не вернули false, то здесь возвращаем true. То есть что перестановка валидная.

Но я не могу понять последний шаг
Стек
источник

i

igor in pro.algorithms
vehlwn
А есть РВ грамматика правильных скобочных выражений? Я не могу построить ее из грамматики калькулятора с скобками.
Стэк и все
источник

 P

 ‌‌Gleb Pilipets in pro.algorithms
igor
Стек
Ну решение выше за O(1) по доп памяти.
источник

v

vehlwn in pro.algorithms
 ‌‌Gleb Pilipets
Ну решение выше за O(1) по доп памяти.
А сколько памяти в packrat парсере?
источник

i

igor in pro.algorithms
Вряд ли за о1
источник

 P

 ‌‌Gleb Pilipets in pro.algorithms
vehlwn
А сколько памяти в packrat парсере?
packrat?
источник

i

igor in pro.algorithms
Даже счётчик в цикле требует логарифм памяти
источник

CD

Constantine Drozdov in pro.algorithms
 ‌‌Gleb Pilipets
Ну решение выше за O(1) по доп памяти.
щито?
источник

CD

Constantine Drozdov in pro.algorithms
скобочную последовательность на правильность за О(1) памяти проверяем? :)
источник

 P

 ‌‌Gleb Pilipets in pro.algorithms
igor
Даже счётчик в цикле требует логарифм памяти
В смысле?  Логарифм от чего?
источник