Я реализую shunting-yard algorithm. У меня возникают проблемы с обнаружением, когда отсутствуют аргументы операторам. wikipedia entry очень плохо по этой теме, и их код также вылетает для примера ниже.Shunting-yard: отсутствующий аргумент оператору
Например, 3 - (5 +)
неверен, так как у +
отсутствует аргумент.
Перед тем как алгоритм достигнет )
, стек оператора содержит - (+
, а стек операнда содержит 3 5
. Тогда это выглядит следующим образом:
- он хлопает
+
из стека оператора - обнаруживает, что
+
является бинарным оператором - выскакивает два операнда, применить оператор и нажимной результат (
8
) в стек операндов - то выталкивает соответствие
(
из стека, и продолжает
Так как я могу определить, что +
отсутствует аргумент? дополнительная престижность, если вы также обновить википедию :-)
Я бы скорее выколол глаза, чем обновил Википедию. –
http://userweb.cs.utexas.edu/~EWD/MCReps/MR35.PDF - это связанное исходное описание Dijikstra - это не работает? –
@Paul: Эта статья немного трудно читать, ИМО. – 2010-07-20 17:00:45