use super::Syntax;
use std::collections::BTreeSet;

impl Syntax {
    pub fn dsa() -> Self {
        Syntax {
            language: "Assembly",
            case_sensitive: false,
            comment: "//",
            comment_multiline: ["/*", "*/"],
            hyperlinks: BTreeSet::from(["http"]),
            keywords: BTreeSet::from([
                "nop", "mov", "movs", "ldb", "ldbs", "ldh", "ldhs", "ldw", "stb", "sth",
                "stw", "lli", "lui", "jmp", "jeq", "jne", "jgt", "jge", "jlt", "jle",
                "cmp", "inc", "dec", "shl", "shr", "add", "sub", "and", "or", "not",
                "xor", "nand", "nor", "xnor", "irt", "int", "hlt",
                // pseduo-instructions
                "db", "dh", "dw", "resb", "resh", "resw", "push", "pop", "lwi", "call",
                "include",
            ]),
            types: BTreeSet::from([]),
            special: BTreeSet::from([
                "rg0", "rg1", "rg2", "rg3", "rg4", "rg5", "rg6", "rg7", "rg8", "rg9",
                "rga", "rgb", "rgc", "rgd", "rge", "rgf", "acc", "spr", "bpr", "ret",
                "idr", "mmr", "zero", "null", "pcx", "mdr", "mar", "sts", "cir",
            ]),
        }
    }
}
