DPLUS2

  • Язык D++
    D++ AGAIN

Теория
Язык D++, в развитие которого было вложено столько сил участниками наших мартовских соревнований, продолжает совершенствоваться. Его создатели пытаются сделать синтаксис языка как можно более простым и свободным с тем, чтобы облегчить программирование на этом языке будущего. Конечно, некоторое минимальное количество правил должно остаться.

Задача
Ваша программа DPLUS2 должна проверять соблюдение некоторых из этих правил, связанных с расстановкой скобок и комментариями.

Текст правильной программы на D++ состоит из символьной части, арифметических выражений и комментариев. Комментарии могут встречаться где угодно и содержать любые символы. Комментарий всегда открывается парой символов '(*' и заканчивается парой символов '*)'. Каждый комментарий обязательно должен закрываться. Арифметические выражения в D++ всегда открываются круглой скобкой '(', закрываются круглой скобкой ')' и могут содержать внутри себя только символы '=+-*/0123456789)(' и, естественно, комментарии. 

Пробелы в арифметических выражениях не допускаются, однако разрешены переводы строк. Скобки в арифметическом выражении могут быть вложенными; при этом они обязаны быть сбалансированными. Это означает, что как '((1)))', так и '(23))((+)' не являются правильными арифметическими выражениями. Правильность выражения определяется только правильностью расстановки в нем скобок. Наконец, весь остальной текст программы (получающийся из исходного отбрасыванием всех комментариев и арифметических выражений) может состоять из произвольных символов, за исключением символов '(' и ')'.

Отметим, что пробелы ВПОЛНЕ возможны в тексте программы везде, кроме арифметических выражений.

 

Формат входных данных
Во входном файле
INPUT.TXT находится некоторый текст. Объем этого текста не превышает 10000 символов. В тексте могут встречаться латинские буквы, цифры, скобки, знаки арифметических действий и символы конца строки и возврата каретки.

Формат выходных данных
В выходной файл
OUTPUT.TXT программа должна вывести слово "YES", если введенный текст является корректной программой на D++ и "NO" в противном случае


Пример:


INPUT.TXT

Hello, here is a sample D++ program. It contains some arithmetical expressions like
(2+2=4), (2+-/*) and ((3+3)*3=20(*this is not true, but you don’t have to verify it :-) *)+8)
(* the closing bracket in the previous comment is also in order, since this bracket
does not belong to any arithmetical expression*)


OUTPUT.TXT

YES