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 != "") {
   ...