我正在尝试创建自己的编程语言。创建语言的代码如下:
var printword=false;
var waitforkey=false;
function Process(text) {
var words = text.split(/\s+/);
var next = 0;
this.nextWord = function () {
if (next >= words.length) return null;
return words[next++];
};
}
function HackerScript() {
var dictionary = {};
this.stack = [];
this.addWords = function (new_dict) {
for (var word in new_dict)
dictionary[word.toUpperCase()] = new_dict[word];
};
this.run = function (text) {
var lexer = new Process(text);
var word;
var num_val;
while (word = lexer.nextWord()) {
while(waitforkey){
waitforkey=false;
}
if(!printword){
word = word.toUpperCase();
}
num_val = parseFloat(word);
if (dictionary[word]) {
dictionary[word](this);
}
else {
if(!printword){
var createerror = document.createElement("p");
createerror.appendChild(document.createTextNode("Could not process"));
document.body.appendChild(createerror);
}
else{
var print=document.createElement("p");
print.appendChild(document.createTextNode(word));
document.body.appendChild(print);
printword=false;
}
}
}
};
}
var print = {
"clearstack": function (terp) {
var ensureclear=confirm("Are you sure you want to clear?");
if(ensureclear){
document.body.innerHTML="";
}
},
"print":function(){
printword=true;
}
}
var wait={
"waitkey":function(terp){
waitforkey=true;
}
}
var HackerScript = new HackerScript();
HackerScript.addWords(print);
HackerScript.addWords(wait);
然后可以通过键入
来运行编程语言HackerScript.run("code words here");
但是,我想让程序员更容易执行编程语言。该语言的代码将通过创建一个带有src的脚本元素来执行,该src指向带有代码的文件。但之后,用户仍然需要创建一个Javascript脚本标记并使用HackerScript变量的run函数。相反,我想将编程语言添加到HTML脚本标记。例如:
<script type="text/Hackerscript">
key words here with no quotes
</script>
探索窗口对象帮助我确定需要将此代码添加到window.HTMLScriptElement中,但是我该怎么做呢?
以下是编程语言代码的链接: http://jsfiddle.net/Mikey013/173g1f93/5/
答案 0 :(得分:2)
您无法直接添加支持。
但是,您可以编写手动查找所有<script type="text/hackerscript">
元素的代码(使用document.querySelectorAll('script[type="text/Hackerscript"]')
)并运行他们的.textContent
。