/* keywords */ DEF(TOK_INT, "int") DEF(TOK_VOID, "void") DEF(TOK_CHAR, "char") DEF(TOK_IF, "if") DEF(TOK_ELSE, "else") DEF(TOK_WHILE, "while") DEF(TOK_BREAK, "break") DEF(TOK_RETURN, "return") DEF(TOK_FOR, "for") DEF(TOK_EXTERN, "extern") DEF(TOK_STATIC, "static") DEF(TOK_UNSIGNED, "unsigned") DEF(TOK_GOTO, "goto") DEF(TOK_DO, "do") DEF(TOK_CONTINUE, "continue") DEF(TOK_SWITCH, "switch") DEF(TOK_CASE, "case") DEF(TOK_CONST1, "const") DEF(TOK_CONST2, "__const") /* gcc keyword */ DEF(TOK_CONST3, "__const__") /* gcc keyword */ DEF(TOK_VOLATILE1, "volatile") DEF(TOK_VOLATILE2, "__volatile") /* gcc keyword */ DEF(TOK_VOLATILE3, "__volatile__") /* gcc keyword */ DEF(TOK_LONG, "long") DEF(TOK_REGISTER, "register") DEF(TOK_SIGNED1, "signed") DEF(TOK_SIGNED2, "__signed") /* gcc keyword */ DEF(TOK_SIGNED3, "__signed__") /* gcc keyword */ DEF(TOK_AUTO, "auto") DEF(TOK_INLINE1, "inline") DEF(TOK_INLINE2, "__inline") /* gcc keyword */ DEF(TOK_INLINE3, "__inline__") /* gcc keyword */ DEF(TOK_RESTRICT1, "restrict") DEF(TOK_RESTRICT2, "__restrict") DEF(TOK_RESTRICT3, "__restrict__") DEF(TOK_EXTENSION, "__extension__") /* gcc keyword */ DEF(TOK_FLOAT, "float") DEF(TOK_DOUBLE, "double") DEF(TOK_BOOL, "_Bool") DEF(TOK_SHORT, "short") DEF(TOK_STRUCT, "struct") DEF(TOK_UNION, "union") DEF(TOK_TYPEDEF, "typedef") DEF(TOK_DEFAULT, "default") DEF(TOK_ENUM, "enum") DEF(TOK_SIZEOF, "sizeof") DEF(TOK_ATTRIBUTE1, "__attribute") DEF(TOK_ATTRIBUTE2, "__attribute__") DEF(TOK_ALIGNOF1, "__alignof") DEF(TOK_ALIGNOF2, "__alignof__") DEF(TOK_TYPEOF1, "typeof") DEF(TOK_TYPEOF2, "__typeof") DEF(TOK_TYPEOF3, "__typeof__") DEF(TOK_LABEL, "__label__") DEF(TOK_ASM1, "asm") DEF(TOK_ASM2, "__asm") DEF(TOK_ASM3, "__asm__") /*********************************************************************/ /* the following are not keywords. They are included to ease parsing */ /* preprocessor only */ DEF(TOK_DEFINE, "define") DEF(TOK_INCLUDE, "include") DEF(TOK_INCLUDE_NEXT, "include_next") DEF(TOK_IFDEF, "ifdef") DEF(TOK_IFNDEF, "ifndef") DEF(TOK_ELIF, "elif") DEF(TOK_ENDIF, "endif") DEF(TOK_DEFINED, "defined") DEF(TOK_UNDEF, "undef") DEF(TOK_ERROR, "error") DEF(TOK_WARNING, "warning") DEF(TOK_LINE, "line") DEF(TOK_PRAGMA, "pragma") DEF(TOK___LINE__, "__LINE__") DEF(TOK___FILE__, "__FILE__") DEF(TOK___DATE__, "__DATE__") DEF(TOK___TIME__, "__TIME__") DEF(TOK___FUNCTION__, "__FUNCTION__") DEF(TOK___VA_ARGS__, "__VA_ARGS__") /* special identifiers */ DEF(TOK___FUNC__, "__func__") /* attribute identifiers */ /* XXX: handle all tokens generically since speed is not critical */ DEF(TOK_SECTION1, "section") DEF(TOK_SECTION2, "__section__") DEF(TOK_ALIGNED1, "aligned") DEF(TOK_ALIGNED2, "__aligned__") DEF(TOK_PACKED1, "packed") DEF(TOK_PACKED2, "__packed__") DEF(TOK_UNUSED1, "unused") DEF(TOK_UNUSED2, "__unused__") DEF(TOK_CDECL1, "cdecl") DEF(TOK_CDECL2, "__cdecl") DEF(TOK_CDECL3, "__cdecl__") DEF(TOK_STDCALL1, "stdcall") DEF(TOK_STDCALL2, "__stdcall") DEF(TOK
when not defined(nimPreviewSlimSystem):
  import std/formatfloat
  export formatfloat
  {.deprecated: "use `std/formatfloat`".}
else:
  {.error: "use `std/formatfloat`".}
DEF_ASM(lgs) DEF_ASM(call) DEF_ASM(jmp) DEF_ASM(lcall) DEF_ASM(ljmp) DEF_ASMTEST(j) DEF_ASMTEST(set) DEF_ASMTEST(cmov) DEF_WL(bsf) DEF_WL(bsr) DEF_WL(bt) DEF_WL(bts) DEF_WL(btr) DEF_WL(btc) DEF_WL(lsl) /* generic FP ops */ DEF_FP(add) DEF_FP(mul) DEF_ASM(fcom) DEF_ASM(fcom_1) /* non existant op, just to have a regular table */ DEF_FP1(com) DEF_FP(comp) DEF_FP(sub) DEF_FP(subr) DEF_FP(div) DEF_FP(divr) DEF_BWL(xadd) DEF_BWL(cmpxchg) /* string ops */ DEF_BWL(cmps) DEF_BWL(scmp) DEF_BWL(ins) DEF_BWL(outs) DEF_BWL(lods) DEF_BWL(slod) DEF_BWL(movs) DEF_BWL(smov) DEF_BWL(scas) DEF_BWL(ssca) DEF_BWL(stos) DEF_BWL(ssto) /* generic asm ops */ #define ALT(x) #define DEF_ASM_OP0(name, opcode) DEF_ASM(name) #define DEF_ASM_OP0L(name, opcode, group, instr_type) #define DEF_ASM_OP1(name, opcode, group, instr_type, op0) #define DEF_ASM_OP2(name, opcode, group, instr_type, op0, op1) #define DEF_ASM_OP3(name, opcode, group, instr_type, op0, op1, op2) #include "i386-asm.h" #define ALT(x) #define DEF_ASM_OP0(name, opcode) #define DEF_ASM_OP0L(name, opcode, group, instr_type) DEF_ASM(name) #define DEF_ASM_OP1(name, opcode, group, instr_type, op0) DEF_ASM(name) #define DEF_ASM_OP2(name, opcode, group, instr_type, op0, op1) DEF_ASM(name) #define DEF_ASM_OP3(name, opcode, group, instr_type, op0, op1, op2) DEF_ASM(name) #include "i386-asm.h" #endif