Parser
by XTREME104
JavaScript
var keywords = [
"class", "function", "if", "else", "switch", "for", "each", "while", "true", "false", "null", "undefined", "NaN", "void", "int", "uint", "String", "Boolean", "Array", "Object", "Vector"
];
var seperators = [
".", ";", ":", "(", ")", "[", "]", "{", "}", "<", ">", "+", "-", "*", "/", "%", "&", "|", "^", "!", "="
];
function parse(input) {
var result = [];
var current = "";
var line = 1,
char = 1,
start = 0;
function pushCurrent() {
if (current !== "") {
if (parseInt(current, 10) == current) {
result.push([current, "number", line, start, char - 1]);
} else if (keywords.indexOf(current) != -1) {
result.push([current, "keyword", line, start, char - 1]);
} else {
result.push([current, "identifier", line, start, char - 1]);
}
}
current = "";
}
for (var i = 0; i < input.length; i++) {
if (seperators.indexOf(input[i]) != -1) {
start = char;
pushCurrent();
var res = input[i];
for (i++; i < input.length && seperators.indexOf(input[i]) != -1; i++) {
res += input[i];
char++;
}
i--;
result.push([res, "seperator", line, start, char]);
} else if (input[i] == "\n") {
pushCurrent();
line++;
char = 0;
} else if (input[i] == "\"" || input[i] == "'") {
start = char;
pushCurrent();
var res = "",
inString = input[i];
console.log(":" + inString);
for (i++; i < input.length && input[i] != inString; i++) {
console.log(input[i]);
res += input[i];
char++;
}
result.push([res, "string", line, start, char]);
} else {
if (current && current != "") {
...