Я хотел бы запустить простой пример анализа Rascal MPL и пытаюсь следовать листингу 1 из инструментального средства Rascal Language Workbench (18531D.pdf) от 3 мая 2011 года. ve загрузил текущую версию MPLS версии 0.5.1 и заметил, что несколько путей модулей были изменены. Ниже показано содержание моего Entities.rsc:Ошибка основного анализа в Rascal MPL Basic Entity Modeling
module tut1::Entities
extend lang::std::Layout;
extend lang::std::Id;
extend Type;
start syntax Entities
= entities: Entity* entities;
syntax Entity
= @Foldable entity: "entity" Id name "{" Field* "}";
syntax Field
= field: Symbol Id name;
Я предполагаю, что здесь то, что было Name
и Ident
теперь Id
; и что было Type
сейчас Symbol
. Я тогда продолжить следующим образом:
rascal>import tut1::Entities;
ok
rascal>import ParseTree;
ok
Однако при попытке выполнить важную функцию parse
, я получаю ошибки, перечисленные ниже. Где я иду не так? (Несмотря на сообщения Хочу отметить, что я может объявить Symbol
переменную в командной строке Rascal.)
rascal>parse(#Entities, "entity Person { string name integer age }");
Extending again?? ParseTree
Extending again?? Type
expanding parameterized symbols
generating stubs for regular
generating literals
establishing production set
generating item allocations
computing priority and associativity filter
printing the source code of the parser class
|prompt:///|(22,43,<1,22>,<1,65>): Java("Undeclared non-terminal: Symbol, in class: class org.rascalmpl.java.parser.object.$shell$")
org.rascalmpl.parser.gtd.SGTDBF.invokeExpects(SGTDBF.java:139)
org.rascalmpl.parser.gtd.SGTDBF.expandStack(SGTDBF.java:864)
org.rascalmpl.parser.gtd.SGTDBF.expand(SGTDBF.java:971)
org.rascalmpl.parser.gtd.SGTDBF.parse(SGTDBF.java:1032)
org.rascalmpl.parser.gtd.SGTDBF.parse(SGTDBF.java:1089)
org.rascalmpl.parser.gtd.SGTDBF.parse(SGTDBF.java:1082)
org.rascalmpl.interpreter.Evaluator.parseObject(Evaluator.java:493)
org.rascalmpl.interpreter.Evaluator.parseObject(Evaluator.java:544)
org.rascalmpl.library.Prelude.parse(Prelude.java:1644)
org.rascalmpl.library.Prelude.parse(Prelude.java:1637)
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
somewhere in: $shell$
Остерегайтесь, это довольно старая версия Rascal! Версия Eclipse лучше поддерживается, но если вы хотите, мы могли бы установить новую версию командной строки – jurgenv
Да, пожалуйста. – user2023370