主要是拿来练习编译原理,该项目前前后后历时将近两个月,现在终于支持了大部分必要的语法(不包含对象),例如执行选择排序算法:
function printArray(array, len) {
while (len > 0) {
len = len - 1;
output(array[len]);
}
}
function selectionSort(arr, length) {
for (let i = 0; i < length; i = i + 1) {
let minIndex = i;
for (let j = i; j < length; j = j + 1) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
let temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
printArray(arr, len);
}
let arr = [2, 5, 17, 7, 19, 90, -9, 11, 1, 0, 10, -6];
let len = 12;
selectionSort(arr, len);
目前支持交互模式:
项目地址: https://github.com/songquanpeng/node
希望大家能给个 Star,满足我的一个小小愿望,另外如果看的人多了,我就把源码里的注释好好地补一下。
希望能对想要实践编译原理的同学有所帮助,谢谢。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.