java - Using Groovy scripting language -
i'm defined own grammar. , i'm trying evalute derivation using groovy scripting language. class :
package org.moeaframework.examples.ga.evaluationrule; import java.io.ioexception; import java.io.stringreader; import java.util.arraylist; import java.util.random; import javax.script.bindings; import javax.script.scriptengine; import javax.script.scriptenginemanager; import javax.script.scriptexception; import javax.script.simplebindings; import org.moeaframework.core.problem; import org.moeaframework.core.solution; import org.moeaframework.core.variable.grammar; import org.moeaframework.util.grammar.contextfreegrammar; import org.moeaframework.util.grammar.parser; //import org.moeaframework.util.vector; public class myprob2 implements problem { static random number_generator = new random(); private contextfreegrammar grammar; int source_index0 = number_generator.nextint(input.context().length); //string cont = null; int source_index1 = number_generator.nextint(input.context().length); //string metr = null; int source_index2 = number_generator.nextint(input.context().length); //string prob = null; //double source_index = number_generator.nextdouble(); static final string grammar = "<rules> ::= 'if' ' ' <context> ' ' <op> ' ' <val> ' , ' <metrics>' ' <op> ' '<val1> ' ' <problem> \n" + "<context> ::= cont \n" + "<op> ::= '>' | '<' \n" + "<val> ::= 'h' | 'm' | 'l' \n" + "<metrics> ::= metr \n" + "<val1> ::= source_index \n" + "<problem> ::= prob "; public myprob2() { super(); try { grammar = parser.load( new stringreader(grammar)); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } } arraylist<string> strs =new arraylist<string>(); public void evaluate(solution solution) { int nbr_prob =0; string result = null; int[] codon = ((grammar)solution.getvariable(0)).toarray(); // derive program using codon string program = grammar.build(codon); //system.out.println("$$$$$$$$$$"+program); if (program == null) { // if null, codon did not produce valid grammar // todo: penalize objective value } else { scriptenginemanager sem = new scriptenginemanager(); scriptengine engine = sem.getenginebyname("groovy"); // initialize variables used program bindings b = new simplebindings(); b.put("cont", input.context()[source_index0]); b.put("metr", input.metrics()[source_index1]); b.put("source_index", number_generator.nextdouble()); b.put("prob", input.problem()[source_index2]); try { result = ((string)engine.eval(program, b)).tostring(); } catch (scriptexception e) { // todo auto-generated catch block e.printstacktrace(); } //system.out.println("tessttt"+b); // todo: use result set objective value strs.add(result); //system.out.println(str); for(int i=0; i<strs.size();i++) { string str2 = strs.get(i); for(int j=1; j<strs.size()-1;j++) { if(strs.get(j).compareto(str2)!=0) { nbr_prob++; } } } solution.setobjective(0, -nbr_prob); //solution.setobjective(0,rules.size()); } } @override public string getname() { return "myprob"; } public solution newsolution() { solution solution = new solution(1, 1); solution.setvariable(0, new grammar(10)); return solution; } @override public void close() { //do nothing } } } i getting following error:
@ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:151) @ javax.script.abstractscriptengine.eval(unknown source) @ org.moeaframework.examples.ga.evaluationrule.myprob2.evaluate(myprob2.java:97) @ org.moeaframework.util.distributed.distributedproblem$problemevaluator.call(distributedproblem.java:99) @ org.moeaframework.util.distributed.distributedproblem$problemevaluator.call(distributedproblem.java:1) @ java.util.concurrent.futuretask.run(unknown source) @ java.util.concurrent.threadpoolexecutor.runworker(unknown source) @ java.util.concurrent.threadpoolexecutor$worker.run(unknown source) @ java.lang.thread.run(unknown source) caused by: org.codehaus.groovy.control.multiplecompilationerrorsexception: startup failed: script59.groovy: 1: unexpected token: cont @ line 1, column 4. if cont > m , metr > source_index prob ^ 1 error @ org.codehaus.groovy.control.errorcollector.failiferrors(errorcollector.java:309) @ org.codehaus.groovy.control.errorcollector.addfatalerror(errorcollector.java:149) @ org.codehaus.groovy.control.errorcollector.adderror(errorcollector.java:119) @ org.codehaus.groovy.control.errorcollector.adderror(errorcollector.java:131) @ org.codehaus.groovy.control.sourceunit.adderror(sourceunit.java:359) @ org.codehaus.groovy.antlr.antlrparserplugin.transformcstintoast(antlrparserplugin.java:142) @ org.codehaus.groovy.antlr.antlrparserplugin.parsecst(antlrparserplugin.java:108) @ org.codehaus.groovy.control.sourceunit.parse(sourceunit.java:236) @ org.codehaus.groovy.control.compilationunit$1.call(compilationunit.java:164) @ org.codehaus.groovy.control.compilationunit.applytosourceunits(compilationunit.java:928) @ org.codehaus.groovy.control.compilationunit.dophaseoperation(compilationunit.java:590) @ org.codehaus.groovy.control.compilationunit.processphaseoperations(compilationunit.java:566) @ org.codehaus.groovy.control.compilationunit.compile(compilationunit.java:543) @ groovy.lang.groovyclassloader.doparseclass(groovyclassloader.java:297) @ groovy.lang.groovyclassloader.parseclass(groovyclassloader.java:267) @ groovy.lang.groovyclassloader.parseclass(groovyclassloader.java:253) @ groovy.lang.groovyclassloader.parseclass(groovyclassloader.java:211) @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.getscriptclass(groovyscriptengineimpl.java:366) @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:143) ... 8 more javax.script.scriptexception: javax.script.scriptexception: groovy.lang.missingpropertyexception: no such property: h class: script56 @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:151) @ javax.script.abstractscriptengine.eval(unknown source) @ org.moeaframework.examples.ga.evaluationrule.myprob2.evaluate(myprob2.java:97) @ org.moeaframework.util.distributed.distributedproblem$problemevaluator.call(distributedproblem.java:99) @ org.moeaframework.util.distributed.distributedproblem$problemevaluator.call(distributedproblem.java:1) @ java.util.concurrent.futuretask.run(unknown source) @ java.util.concurrent.threadpoolexecutor.runworker(unknown source) @ java.util.concurrent.threadpoolexecutor$worker.run(unknown source) @ java.lang.thread.run(unknown source) caused by: javax.script.scriptexception: groovy.lang.missingpropertyexception: no such property: h class: script56 @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:347) @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:145) ... 8 more caused by: groovy.lang.missingpropertyexception: no such property: h class: script56 @ org.codehaus.groovy.runtime.scriptbytecodeadapter.unwrap(scriptbytecodeadapter.java:51) @ org.codehaus.groovy.runtime.callsite.pogogetpropertysite.getproperty(pogogetpropertysite.java:49) @ org.codehaus.groovy.runtime.callsite.abstractcallsite.callgroovyobjectgetproperty(abstractcallsite.java:304) @ script56.run(script56.groovy:1) @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:344) ... 9 more javax.script.scriptexception: javax.script.scriptexception: groovy.lang.missingpropertyexception: no such property: l class: script58 @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:151) @ javax.script.abstractscriptengine.eval(unknown source) @ org.moeaframework.examples.ga.evaluationrule.myprob2.evaluate(myprob2.java:97) @ org.moeaframework.util.distributed.distributedproblem$problemevaluator.call(distributedproblem.java:99) @ org.moeaframework.util.distributed.distributedproblem$problemevaluator.call(distributedproblem.java:1) @ java.util.concurrent.futuretask.run(unknown source) @ java.util.concurrent.threadpoolexecutor.runworker(unknown source) @ java.util.concurrent.threadpoolexecutor$worker.run(unknown source) @ java.lang.thread.run(unknown source) caused by: javax.script.scriptexception: groovy.lang.missingpropertyexception: no such property: l class: script58 @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:347) @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:145) ... 8 more caused by: groovy.lang.missingpropertyexception: no such property: l class: script58 @ org.codehaus.groovy.runtime.scriptbytecodeadapter.unwrap(scriptbytecodeadapter.java:51) @ org.codehaus.groovy.runtime.callsite.pogogetpropertysite.getproperty(pogogetpropertysite.java:49) @ org.codehaus.groovy.runtime.callsite.abstractcallsite.callgroovyobjectgetproperty(abstractcallsite.java:304) @ script58.run(script58.groovy:1) @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:344) ... 9 more javax.script.scriptexception: javax.script.scriptexception: groovy.lang.missingpropertyexception: no such property: l class: script54 @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:151) @ javax.script.abstractscriptengine.eval(unknown source) @ org.moeaframework.examples.ga.evaluationrule.myprob2.evaluate(myprob2.java:97) @ org.moeaframework.util.distributed.distributedproblem$problemevaluator.call(distributedproblem.java:99) @ org.moeaframework.util.distributed.distributedproblem$problemevaluator.call(distributedproblem.java:1) @ java.util.concurrent.futuretask.run(unknown source) @ java.util.concurrent.threadpoolexecutor.runworker(unknown source) @ java.util.concurrent.threadpoolexecutor$worker.run(unknown source) @ java.lang.thread.run(unknown source) caused by: javax.script.scriptexception: groovy.lang.missingpropertyexception: no such property: l class: script54 @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:347) @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:145) ... 8 more caused by: groovy.lang.missingpropertyexception: no such property: l class: script54 @ org.codehaus.groovy.runtime.scriptbytecodeadapter.unwrap(scriptbytecodeadapter.java:51) @ org.codehaus.groovy.runtime.callsite.pogogetpropertysite.getproperty(pogogetpropertysite.java:49) @ org.codehaus.groovy.runtime.callsite.abstractcallsite.callgroovyobjectgetproperty(abstractcallsite.java:304) @ script54.run(script54.groovy:1) @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:344) ... 9 more javax.script.scriptexception: org.codehaus.groovy.control.multiplecompilationerrorsexception: startup failed: script62.groovy: 1: unexpected token: cont @ line 1, column 4. if cont > l , metr < source_index prob ^ 1 error @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:151) @ javax.script.abstractscriptengine.eval(unknown source) @ org.moeaframework.examples.ga.evaluationrule.myprob2.evaluate(myprob2.java:97) @ org.moeaframework.util.distributed.distributedproblem$problemevaluator.call(distributedproblem.java:99) @ org.moeaframework.util.distributed.distributedproblem$problemevaluator.call(distributedproblem.java:1) @ java.util.concurrent.futuretask.run(unknown source) @ java.util.concurrent.threadpoolexecutor.runworker(unknown source) @ java.util.concurrent.threadpoolexecutor$worker.run(unknown source) @ java.lang.thread.run(unknown source) caused by: org.codehaus.groovy.control.multiplecompilationerrorsexception: startup failed: script62.groovy: 1: unexpected token: cont @ line 1, column 4. if cont > l , metr < source_index prob ^ 1 error @ org.codehaus.groovy.control.errorcollector.failiferrors(errorcollector.java:309) @ org.codehaus.groovy.control.errorcollector.addfatalerror(errorcollector.java:149) @ org.codehaus.groovy.control.errorcollector.adderror(errorcollector.java:119) @ org.codehaus.groovy.control.errorcollector.adderror(errorcollector.java:131) @ org.codehaus.groovy.control.sourceunit.adderror(sourceunit.java:359) @ org.codehaus.groovy.antlr.antlrparserplugin.transformcstintoast(antlrparserplugin.java:142) @ org.codehaus.groovy.antlr.antlrparserplugin.parsecst(antlrparserplugin.java:108) @ org.codehaus.groovy.control.sourceunit.parse(sourceunit.java:236) @ org.codehaus.groovy.control.compilationunit$1.call(compilationunit.java:164) @ org.codehaus.groovy.control.compilationunit.applytosourceunits(compilationunit.java:928) @ org.codehaus.groovy.control.compilationunit.dophaseoperation(compilationunit.java:590) @ org.codehaus.groovy.control.compilationunit.processphaseoperations(compilationunit.java:566) @ org.codehaus.groovy.control.compilationunit.compile(compilationunit.java:543) @ groovy.lang.groovyclassloader.doparseclass(groovyclassloader.java:297) @ groovy.lang.groovyclassloader.parseclass(groovyclassloader.java:267) @ groovy.lang.groovyclassloader.parseclass(groovyclassloader.java:253) @ groovy.lang.groovyclassloader.parseclass(groovyclassloader.java:211) @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.getscriptclass(groovyscriptengineimpl.java:366) @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:143) ... 8 more javax.script.scriptexception: org.codehaus.groovy.control.multiplecompilationerrorsexception: startup failed: script63.groovy: 1: unexpected token: cont @ line 1, column 4. if cont > m , metr < source_index prob ^ 1 error @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:151) @ javax.script.abstractscriptengine.eval(unknown source) @ org.moeaframework.examples.ga.evaluationrule.myprob2.evaluate(myprob2.java:97) @ org.moeaframework.util.distributed.distributedproblem$problemevaluator.call(distributedproblem.java:99) @ org.moeaframework.util.distributed.distributedproblem$problemevaluator.call(distributedproblem.java:1) @ java.util.concurrent.futuretask.run(unknown source) @ java.util.concurrent.threadpoolexecutor.runworker(unknown source) @ java.util.concurrent.threadpoolexecutor$worker.run(unknown source) @ java.lang.thread.run(unknown source) caused by: org.codehaus.groovy.control.multiplecompilationerrorsexception: startup failed: script63.groovy: 1: unexpected token: cont @ line 1, column 4. if cont > m , metr < source_index prob ^ 1 error @ org.codehaus.groovy.control.errorcollector.failiferrors(errorcollector.java:309) @ org.codehaus.groovy.control.errorcollector.addfatalerror(errorcollector.java:149) @ org.codehaus.groovy.control.errorcollector.adderror(errorcollector.java:119) @ org.codehaus.groovy.control.errorcollector.adderror(errorcollector.java:131) @ org.codehaus.groovy.control.sourceunit.adderror(sourceunit.java:359) @ org.codehaus.groovy.antlr.antlrparserplugin.transformcstintoast(antlrparserplugin.java:142) @ org.codehaus.groovy.antlr.antlrparserplugin.parsecst(antlrparserplugin.java:108) @ org.codehaus.groovy.control.sourceunit.parse(sourceunit.java:236) @ org.codehaus.groovy.control.compilationunit$1.call(compilationunit.java:164) @ org.codehaus.groovy.control.compilationunit.applytosourceunits(compilationunit.java:928) @ org.codehaus.groovy.control.compilationunit.dophaseoperation(compilationunit.java:590) @ org.codehaus.groovy.control.compilationunit.processphaseoperations(compilationunit.java:566) @ org.codehaus.groovy.control.compilationunit.compile(compilationunit.java:543) @ groovy.lang.groovyclassloader.doparseclass(groovyclassloader.java:297) @ groovy.lang.groovyclassloader.parseclass(groovyclassloader.java:267) @ groovy.lang.groovyclassloader.parseclass(groovyclassloader.java:253) @ groovy.lang.groovyclassloader.parseclass(groovyclassloader.java:211) @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.getscriptclass(groovyscriptengineimpl.java:366) @ org.codehaus.groovy.jsr223.groovyscriptengineimpl.eval(groovyscriptengineimpl.java:143) ... 8 more javax.script.scriptexception: org.codehaus.groovy.control.multiplecompilationerrorsexception: startup failed: script64.groovy: 1: unexpected token: cont @ line 1, column 4. if cont > l , metr > source_index prob ^ .................... please give me idea solve problem. !!
Comments
Post a Comment