我正在使用代码镜为我教的课程构建一些编码练习。我进行了设置,以便代码镜像一次检索一行代码,突出显示当前行,以便学生可以在执行时查看每个步骤。
问题是我希望学生能够创建自己的功能,但我无法逐行阅读代码。我需要先找到任何用户定义的函数。然后,如果用户调用该函数,我需要跳转到该函数,读取函数内的行,然后返回到用户调用函数的位置继续读取其余代码。
有什么想法?我挖掘了手册,没有任何东西作为解决方案跳出来。提前致谢。
var editor = CodeMirror.fromTextArea(document.getElementById("editor"), {
lineNumbers: true,
mode: "javascript",
matchBrackets: true
});
editor.setSize(400, 400);
$('#submit').click(function(){
//read the next line of code each second
myVar=setInterval(function(){getCode()},1000);
});
function getCode(){
//only read lines that have code written in them
var lines = editor.lineCount();
//get all the code on that specific line
var code = editor.getRange({'line': i, 'ch': 0}, {'line': i, 'ch': 255});
//highlight
editor.removeLineClass(i-1, 'background', 'highlight');
editor.addLineClass(i, 'background', 'highlight');
//evaluate code (this will be replaced with a library eventually for security reasons)
eval(code);
i++;
//stop once all lines have been read
if(i > lines){
clearInterval(myVar);
}
答案 0 :(得分:0)
使用解析器获取更抽象的代码视图。由于学生可能正在编辑代码,并且它可能在语法上无效,因此Acorn的容错解析器可能非常合适。请参阅http://marijnhaverbeke.nl/acorn和http://marijnhaverbeke.nl/blog/parse-dammit.html