Диагностика ошибки команды расширения netlogo

Когда я пытаюсь выполнить пример расширения первых n целых чисел:

показать шум: первые n целых чисел 5

Я получаю сообщение об ошибке «ОШИБКА: ожидаемая команда» в консоли или на вкладке кода. В основном я копировал и вставлял примеры классов как есть, просто переименовывая их и помещая в другой пакет. Я бы хотел, чтобы ошибка была немного более описательной, так как я подозреваю, что где-то делаю простую ошибку.

Я использую 5.0.4 без JRE и 1.7.0_45 JRE/JDK на машине x64 Windows 7.

Мой файл manifest.txt с полноценным менеджером классов и crlf в конце строки версии:

Manifest-Version: 1.0
Extension-Name: noise
Class-Manager: org.xyz.extensions.NoiseExtension
NetLogo-Extension-API-Version: 5.0  <--there is a crlf here

банка находится в подпапке с моим файлом модели

test/
  test.nlogo
  noise/
    noise.jar

Это мой класс-менеджер:

package org.xyz.extensions;

import org.nlogo.api.*;

public class NoiseExtension extends DefaultClassManager {
  public void load(PrimitiveManager primitiveManager) {
    primitiveManager.addPrimitive(
      "first-n-integers", new org.xyz.extensions.NoiseGenerator());
  }
}

Это файл NoiseGenerator:

package org.xyz.extensions;
import org.nlogo.api.*;

public class NoiseGenerator extends DefaultReporter {

public Syntax getSyntax() {
    return Syntax.reporterSyntax(
    new int[] {Syntax.NumberType()}, Syntax.ListType());

}

public Object report(Argument args[], Context context) throws ExtensionException {
// create a NetLogo list for the result
LogoListBuilder list = new LogoListBuilder();
int n ;
// use typesafe helper method from
// org.nlogo.api.Argument to access argument
try {
  n = args[0].getIntValue(); 
}
catch(LogoException e) {
  throw new ExtensionException( e.getMessage() ) ;
}
if (n < 0) {
// signals a NetLogo runtime error to the modeler
throw new ExtensionException
  ("input must be positive");
}
// populate the list. note that we use Double objects; NetLogo
// numbers are always Doubles
for (int i = 0; i < n; i++) {
  list.add(Double.valueOf(i));
}
return list.toLogoList();

} }

Спасибо за любую помощь.

АДЖБ


person user3113257    schedule 17.12.2013    source источник


Ответы (1)


Это спросили и ответили здесь:

https://groups.google.com/d/msg/netlogo-devel/eIq8drflsc8/7y_Ooh6R0sgJ

Ответ состоял в том, чтобы исправить написание getSynax на getSyntax.

person Seth Tisue    schedule 18.12.2013