parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

в данном месте кода не видно синтаксических проблем

Misha v.3 05.10.2006 13:46 / 05.10.2006 14:01

это: ^data.$LevelNum.show[$leveldata] все таки вызов метода. в поле хеша show кладется junction, т.е. указатель на код (в вашем случае не метод).

если он помещается в хеш именно так, как вы привели: $.show[$shTopicItem], и метод @shTopicItem[] определен, то возможно что проблема в том, что в хеше data нет элемента с запрошеным номером. в этом случае $data.$LevelNum вернет void, $data.$LevelNum.show тоже вернет void, и парсер возмутится, т.к. его просят вызвать метод, который указывает в никуда.

для диагностики ошибки перед $title[...] напишите:
^if(!def $data.$LevelNum){
	^throw[assert;Element $LevelNum not defined.]
}
так вы увидите какой элемент у вас некорректный. обнаружив это будуте разбираться кто и в какой момент помещает в хеш такой элемент.
кроме того на в исходном хеше data он ругается и на строку вида
^data._count[]
про _count тоже говорит - неизвестный метод.
это означает что $dana - не хеш. точка.
возможно $data вормируется так:
$data[
	^if(условия){
		$.элемент[значение]
	}
]
т.е. условие внутри всегда ложно и в $data оказывается... строка из нескольких пробельных символов.

вы можете создать там хеш насильно $data[^hash::create[]] и добавить элементы с помощью .add.

однако вы говорите что ошибка появилась после перехода на новую версию парсера, поэтому нужно продолжать искать. круг уже сузился - у вас неверно формируется хеш $data. ищите проблему в коде его формирования.