Я пишу очень простой язык программирования на Javascript.У него есть лексер только из одного слова.Когда слово вызывается, лексер должен поместить содержимое поля ввода в окно предупреждения.Вместо этого ничего не происходит.В консоли нет ошибок, ничего нет.Я пишу лексер в отдельном файле для переводчика.Вот мой кодLexer:
function ScratchLexer(text) {
var words = text.split(/\s+/);
var next = 0;
this.nextWord = function () {
if (next >= words.length) return null;
return words[next++];
};
}
function Scratch() {
var dictionary = {};
this.addWords = function (new_dict) {
for (var word in new_dict)
dictionary[word.toUpperCase()] = new_dict[word];
};
this.run = function (text) {
var lexer = new ScratchLexer(text);
var word;
while (word = lexer.nextWord()) {
word = word.toUpperCase();
num_val = parseFloat(word);
if (dictionary[word]) {
dictionary[word](this);
} else if (!isNaN(num_val)) {
this.stack.push(num_val);
} else {
throw "Unknown word";
}
}
};
}
var PrintingWords = {
"ALERT": function (terp) {
var tos = terp.document.getElementById("Text").value.pop(); alert(tos);
}
}
Переводчик:
<html>
<head>
<script type="text/javascript" src="scratch-lang.js"></script>
<script type="text/javascript">
var terp = new Scratch();
terp.addWords(PrintingWords);
terp.addWords(MathWords);
var alertwords = document.getElementById("TextAlert");
</script>
<style type="text/css">
body { Margin: 2em 5em; Line-height: 2em; Font-family: serif; }
body { Background-color: #ffffff; Color: #000000; }
#TextAlert { Width: 32em; }
#Text { Width: 32em; }
</style>
</head>
<body>
<br />
<input id="TextAlert" value = ""/><input id = 'run' type = 'button' value =
'Run' />
<br />
<input id="Text" value = ""/>
</body>
</html>