मूल रूप से मैं एक जावास्क्रिप्ट-जैसे सिंटैक्स को पार्स करने में सक्षम होना चाहता हूं। उदाहरण के लिए:
var results = system.function('example');
if(results == "hello") {
console_print("ding dong.");
}
तो मूल रूप से आप इसे प्राप्त करते हैं, परिणाम "स्ट्रिंग" होंगे और system.function
जावा विधि को कॉल करेंगे, और वे परिणाम परिणाम स्ट्रिंग में जाएंगे।
मैं इसमें बुनियादी गणित, और सत्यापन भी करने में सक्षम होना चाहता हूं, लेकिन मैं इसे जावा में करना चाहता हूं। कोई विचार?
2 जवाब
यदि आप जावास्क्रिप्ट का उपयोग करने के इच्छुक हैं (न केवल जावास्क्रिप्ट की तरह), और आप जावा 1.6+ का उपयोग कर रहे हैं, तो आप स्क्रिप्टिंग API:
import javax.script.*;
public class Main {
public static void main (String[] args) throws Exception {
String source =
"var system = new Array(); \n" +
"system['foo'] = function(s) { return 'hello'; } \n" +
" \n" +
"var results = system.foo('example'); \n" +
" \n" +
"if(results == \"hello\") { \n" +
" print(\"ding dong.\"); \n" +
"} \n";
ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
engine.eval(source);
}
}
जो प्रिंट करेगा:
ding dong.
कंसोल को।
और स्क्रिप्टिंग भाषा से जावा विधियों को लागू करने के लिए, आप BeanShell आज़मा सकते हैं:
package test;
import bsh.Interpreter;
public class Main {
public static void foo(Object param) {
System.out.println("From Java, param=" + param);
}
public static void main (String[] args) throws Exception {
Interpreter i = new Interpreter();
i.eval("a = 3 * 5; test.Main.foo(a);");
}
}
जो प्रिंट करेगा:
From Java, param=15
बीनशेल का कोर इंटरप्रेटर जार केवल 143 KB है: इससे अधिक हल्का मुश्किल हो, आईएमओ।
\n
, "
और +
के साथ कैसे प्रारूपित किया? मैन्युअल रूप से या कोई शॉर्टकट?
String source = "";
और IntelliJ ने सुनिश्चित किया कि उद्धरण ठीक से बच गए और मेरे लिए लाइन-ब्रेक जोड़ा गया।
मुझे लगता है कि आप इसके लिए राइनो का उपयोग कर सकते हैं। राइनो एक जावास्क्रिप्ट इंजन है जिसे जावा में एम्बेड किया जा सकता है।
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।