-- FIXME omitted definition of $DESCRIPTION
-- FIXME omitted definition of $ML_COMMENT
-- Language definition generated by lang2to3

Description="D"

Digits=[[ (?:0x|0X)[0-9a-fA-F]+|\d*[\.\_]?\d+(?:[eE][\-\+]\d+)?[lLuUbfdm]* ]]

Keywords={
  { Id=1,
    List={"abstract", "alias", "align", "asm", "assert", "auto", "", "bit", "body", "break", "byte", "", "case", "cast", "catch", "cdouble", "cent", "cfloat", "char", "class", "const", "continue", "creal", "dchar", "debug", "default", "delegate", "delete", "deprecated", "do", "double", "", "else", "enum", "export", "extern", "", "false", "final", "finally", "float", "for", "foreach", "function", "", "goto", "idouble", "if", "ifloat", "import", "in", "inout", "int", "interface", "invariant", "ireal", "is", "", "long", "", "mixin", "module", "", "new", "null", "", "out", "override", "", "package", "pragma", "private", "protected", "public", "", "real", "return", "", "short", "static", "struct", "super", "switch", "synchronized", "", "template", "this", "throw", "true", "try", "typedef", "typeid", "typeof", "", "ubyte", "ucent", "uint", "ulong", "union", "unittest", "ushort", "", "version", "void", "volatile", "", "wchar", "while", "with"},
  },
  { Id=2,
    List={"__FILE__", "__LINE__", "__DATE__", "__TIME__", "__TIMESTAMP__"},
  },
  { Id=3,
    List={"aaa", "aad", "aam", "aas", "adc", "", "add", "addpd", "addps", "addsd", "addss", "", "and", "andnpd", "andnps", "andpd", "andps", "", "arpl", "bound", "bsf", "bsr", "bswap", "", "bt", "btc", "btr", "bts", "call", "", "cbw", "cdq", "clc", "cld", "clflush", "", "cli", "clts", "cmc", "cmova", "cmovae", "", "cmovb", "cmovbe", "cmovc", "cmove", "cmovg", "cmovge", "cmovl", "cmovle", "cmovna", "cmovnae", "", "cmovnb", "cmovnbe", "cmovnc", "cmovne", "cmovng", "", "cmovnge", "cmovnl", "cmovnle", "cmovno", "cmovnp", "", "cmovns", "cmovnz", "cmovo", "cmovp", "cmovpe", "", "cmovpo", "cmovs", "cmovz", "cmp", "cmppd", "", "cmpps", "cmps", "cmpsb", "cmpsd", "cmpss", "", "cmpsw", "cmpxch8b", "cmpxchg", "comisd", "comiss", "", "cpuid", "cvtdq2pd", "cvtdq2ps", "cvtpd2dq", "cvtpd2pi", "", "cvtpd2ps", "cvtpi2pd", "cvtpi2ps", "cvtps2dq", "cvtps2pd", "", "cvtps2pi", "cvtsd2si", "cvtsd2ss", "cvtsi2sd", "cvtsi2ss", "", "cvtss2sd", "cvtss2si", "cvttpd2dq", "cvttpd2pi", "cvttps2dq", "", "cvttps2pi", "cvttsd2si", "cvttss2si", "cwd", "cwde", "", "da", "daa", "das", "db", "dd", "", "de", "dec", "df", "di", "div", "", "divpd", "divps", "divsd", "divss", "dl", "", "dq", "ds", "dt", "dw", "emms", "", "enter", "f2xm1", "fabs", "fadd", "faddp", "", "fbld", "fbstp", "fchs", "fclex", "fcmovb", "", "fcmovbe", "fcmove", "fcmovnb", "fcmovnbe", "fcmovne", "", "fcmovnu", "fcmovu", "fcom", "fcomi", "fcomip", "", "fcomp", "fcompp", "fcos", "fdecstp", "fdisi", "", "fdiv", "fdivp", "fdivr", "fdivrp", "feni", "", "ffree", "fiadd", "ficom", "ficomp", "fidiv", "fidivr", "fild", "fimul", "fincstp", "finit", "", "fist", "fistp", "fisub", "fisubr", "fld", "", "fld1", "fldcw", "fldenv", "fldl2e", "fldl2t", "", "fldlg2", "fldln2", "fldpi", "fldz", "fmul", "", "fmulp", "fnclex", "fndisi", "fneni", "fninit", "", "fnop", "fnsave", "fnstcw", "fnstenv", "fnstsw", "", "fpatan", "fprem", "fprem1", "fptan", "frndint", "frstor", "fsave", "fscale", "fsetpm", "fsin", "", "fsincos", "fsqrt", "fst", "fstcw", "fstenv", "", "fstp", "fstsw", "fsub", "fsubp", "fsubr", "", "fsubrp", "ftst", "fucom", "fucomi", "fucomip", "", "fucomp", "fucompp", "fwait", "fxam", "fxch", "", "fxrstor", "fxsave", "fxtract", "fyl2x", "fyl2xp1", "", "hlt", "idiv", "imul", "in", "inc", "", "ins", "insb", "insd", "insw", "int", "", "into", "invd", "invlpg", "iret", "iretd", "", "ja", "jae", "jb", "jbe", "jc", "", "jcxz", "je", "jecxz", "jg", "jge", "", "jl", "jle", "jmp", "jna", "jnae", "jnb", "jnbe", "jnc", "jne", "jng", "", "jnge", "jnl", "jnle", "jno", "jnp", "", "jns", "jnz", "jo", "jp", "jpe", "", "jpo", "js", "jz", "lahf", "lar", "", "ldmxcsr", "lds", "lea", "leave", "les", "lfence", "lfs", "lgdt", "lgs", "lidt", "", "lldt", "lmsw", "lock", "lods", "lodsb", "", "lodsd", "lodsw", "loop", "loope", "loopne", "", "loopnz", "loopz", "lsl", "lss", "ltr", "maskmovdqu", "maskmovq", "maxpd", "maxps", "maxsd", "", "maxss", "mfence", "minpd", "minps", "minsd", "", "minss", "mov", "movapd", "movaps", "movd", "", "movdq2q", "movdqa", "movdqu", "movhlps", "movhpd", "", "movhps", "movlhps", "movlpd", "movlps", "movmskpd", "", "movmskps", "movntdq", "movnti", "movntpd", "movntps", "", "movntq", "movq", "movq2dq", "movs", "movsb", "", "movsd", "movss", "movsw", "movsx", "movupd", "", "movups", "movzx", "mul", "mulpd", "mulps", "", "mulsd", "mulss", "neg", "nop", "not", "", "or", "orpd", "orps", "out", "outs", "", "outsb", "outsd", "outsw", "packssdw", "packsswb", "", "packuswb", "paddb", "paddd", "paddq", "paddsb", "", "paddsw", "paddusb", "paddusw", "paddw", "pand", "", "pandn", "pavgb", "pavgw", "pcmpeqb", "pcmpeqd", "", "pcmpeqw", "pcmpgtb", "pcmpgtd", "pcmpgtw", "pextrw", "", "pinsrw", "pmaddwd", "pmaxsw", "pmaxub", "pminsw", "", "pminub", "pmovmskb", "pmulhuw", "pmulhw", "pmullw", "", "pmuludq", "pop", "popa", "popad", "popf", "", "popfd", "por", "prefetchnta", "prefetcht0", "prefetcht1", "", "prefetcht2", "psadbw", "pshufd", "pshufhw", "pshuflw", "", "pshufw", "pslld", "pslldq", "psllq", "psllw", "", "psrad", "psraw", "psrld", "psrldq", "psrlq", "", "psrlw", "psubb", "psubd", "psubq", "psubsb", "", "psubsw", "psubusb", "psubusw", "psubw", "punpckhbw", "", "punpckhdq", "punpckhqdq", "punpckhwd", "punpcklbw", "punpckldq", "", "punpcklqdq", "punpcklwd", "push", "pusha", "pushad", "", "pushf", "pushfd", "pxor", "rcl", "rcpps", "", "rcpss", "rcr", "rdmsr", "rdpmc", "rdtsc", "", "rep", "repe", "repne", "repnz", "repz", "", "ret", "retf", "rol", "ror", "rsm", "", "rsqrtps", "rsqrtss", "sahf", "sal", "sar", "", "sbb", "scas", "scasb", "scasd", "scasw", "", "seta", "setae", "setb", "setbe", "setc", "", "sete", "setg", "setge", "setl", "setle", "", "setna", "setnae", "setnb", "setnbe", "setnc", "", "setne", "setng", "setnge", "setnl", "setnle", "setno", "setnp", "setns", "setnz", "seto", "", "setp", "setpe", "setpo", "sets", "setz", "", "sfence", "sgdt", "shl", "shld", "shr", "", "shrd", "shufpd", "shufps", "sidt", "sldt", "", "smsw", "sqrtpd", "sqrtps", "sqrtsd", "sqrtss", "", "stc", "sti", "stmxcsr", "stos", "", "stosb", "stosd", "stosw", "str", "sub", "", "subpd", "subps", "subsd", "subss", "sysenter", "", "sysexit", "test", "ucomisd", "ucomiss", "ud2", "", "unpckhpd", "unpckhps", "unpcklpd", "unpcklps", "verr", "verw", "wait", "wbinvd", "wrmsr", "xadd", "xchg", "xlat", "xlatb", "xor", "xorpd", "xorps", "addsubpd", "addsubps", "fisttp", "haddpd", "haddps", "hsubpd", "hsubps", "lddqu", "monitor", "movddup", "movshdup", "movsldup", "mwait", "pavgusb", "pf2id", "pfacc", "pfadd", "pfcmpeq", "pfcmpge", "", "pfcmpgt", "pfmax", "pfmin", "pfmul", "pfnacc", "pfpnacc", "pfrcp", "pfrcpit1", "pfrcpit2", "pfrsqit1", "pfrsqrt", "pfsub", "pfsubr", "pi2fd", "pmulhrw", "pswapd"},
  },
  { Id=4,
    Regex=[[(\w+)\s*\(]],
  },
}

Strings={
  Delimiter=[["|'|`]],
  RawPrefix="r",
}

IgnoreCase=false

Comments={
  { Block=false,
    Delimiter= { [[//]] },
  },
  { Block=true,
    Nested=false,
    Delimiter= { [[\/\*]],[[\*\/]],}
  },
  { Block=true,
    Nested=false,
    Delimiter= { [[\/\+]],[[\+\/]],}
  }
}

Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\.|\:|\&|\<|\>|\!|\=|\/|\*|\%|\+|\-|\~]]

--FIXME no default escchar param: regex(\\\d{3}|\\x\p{XDigit}{2}|\\[ntvbrfa\\\?'"])
