在脚本标记中添加语言

时间:2015-05-26 18:49:35

标签: javascript html

我正在尝试创建自己的编程语言。创建语言的代码如下:

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/

1 个答案:

答案 0 :(得分:2)

您无法直接添加支持。

但是,您可以编写手动查找所有<script type="text/hackerscript">元素的代码(使用document.querySelectorAll('script[type="text/Hackerscript"]'))并运行他们的.textContent