summaryrefslogtreecommitdiff
path: root/compiler_and_linker/unsorted/CPreprocess.c
diff options
context:
space:
mode:
authorAsh Wolf <ninji@wuffs.org>2023-01-26 11:30:47 +0000
committerAsh Wolf <ninji@wuffs.org>2023-01-26 11:30:47 +0000
commit094b96ca1df4a035b5f93c351f773306c0241f3f (patch)
tree95ce05e3ebe816c7ee7996206bb37ea17d8ca33c /compiler_and_linker/unsorted/CPreprocess.c
parentfc0c4c0df7b583b55a08317cf1ef6a71d27c0440 (diff)
downloadMWCC-094b96ca1df4a035b5f93c351f773306c0241f3f.tar.gz
MWCC-094b96ca1df4a035b5f93c351f773306c0241f3f.zip
move lots of source files around to match their actual placement in the original treemain
Diffstat (limited to 'compiler_and_linker/unsorted/CPreprocess.c')
-rw-r--r--compiler_and_linker/unsorted/CPreprocess.c676
1 files changed, 0 insertions, 676 deletions
diff --git a/compiler_and_linker/unsorted/CPreprocess.c b/compiler_and_linker/unsorted/CPreprocess.c
deleted file mode 100644
index 4e6b3c0..0000000
--- a/compiler_and_linker/unsorted/CPreprocess.c
+++ /dev/null
@@ -1,676 +0,0 @@
-#include "compiler/CPreprocess.h"
-#include "compiler/CError.h"
-#include "compiler/CMachine.h"
-#include "compiler/CParser.h"
-#include "compiler/CPrep.h"
-#include "compiler/CPrepTokenizer.h"
-#include "compiler/CompilerTools.h"
-#include "cos.h"
-
-void CPrep_PreprocessDumpNewLine(void) {
- if (copts.line_prepdump && pplist.data && filesp >= 0)
- AppendGListData(&pplist, "\r", 1);
-}
-
-void CPrep_PreprocessDumpFileInfo(Boolean flag) {
- char linebuf[512];
- int size;
- SInt16 tmp16;
- SInt32 tmp32;
- Str255 filename;
-
- if (pplist.data && filesp >= 0) {
- if (nlflag && flag && pplist.size > 0)
- AppendGListName(&pplist, "\r");
-
- if (copts.line_prepdump)
- size = sprintf(linebuf, "#line % " PRId32 "\t\"", linenumber);
- else
- size = sprintf(linebuf, "/* #line % " PRId32 "\t\"", linenumber);
- AppendGListData(&pplist, linebuf, size);
-
- if (copts.fullpath_prepdump) {
- if (prep_file->nameNode) {
- AppendGListData(&pplist, prep_file->nameNode->name, strlen(prep_file->nameNode->name));
- } else {
- COS_FileGetPathName(linebuf, &prep_file->textfile, &tmp32);
- AppendGListData(&pplist, linebuf, strlen(linebuf));
- }
- } else {
- if (prep_file->nameNode) {
- char *work = prep_file->nameNode->name + strlen(prep_file->nameNode->name);
- while (work > prep_file->nameNode->name && !strchr("/\\:", work[-1]))
- work--;
-
- AppendGListData(&pplist, work, strlen(work));
- } else {
- COS_FileGetFSSpecInfo(&prep_file->textfile, &tmp16, &tmp32, filename);
- AppendGListData(&pplist, &filename[1], filename[0]);
- }
- }
-
- size = sprintf(linebuf, "\"\t/* stack depth % " PRId32 " */", filesp);
- AppendGListData(&pplist, linebuf, size);
-
- if (copts.line_prepdump && flag)
- CPrep_PreprocessDumpNewLine();
-
- nlflag = 1;
- }
-}
-
-static void CPrep_DumpWString(UInt16 *str, short len) {
- int divisor;
- int i;
-
- while (len--) {
- if (*str < 32) {
- AppendGListByte(&pplist, '\\');
- switch (*str) {
- case 7:
- AppendGListByte(&pplist, 'a');
- break;
- case 8:
- AppendGListByte(&pplist, 'b');
- break;
- case 27:
- AppendGListByte(&pplist, 'e');
- break;
- case 12:
- AppendGListByte(&pplist, 'f');
- break;
- case 10:
- AppendGListByte(&pplist, 'n');
- break;
- case 13:
- AppendGListByte(&pplist, 'r');
- break;
- case 9:
- AppendGListByte(&pplist, 't');
- break;
- case 11:
- AppendGListByte(&pplist, 'v');
- break;
- default:
- if (*str >= 8)
- AppendGListByte(&pplist, '0' + (*str / 8));
- AppendGListByte(&pplist, '0' + (*str % 8));
- }
- } else if (*str > 255) {
- AppendGListByte(&pplist, '\\');
- AppendGListByte(&pplist, 'x');
-
- divisor = 0x1000;
- for (i = 0; i < 4; i++) {
- AppendGListByte(&pplist, "0123456789ABCDEF"[(*str / divisor) % 16]);
- divisor /= 16;
- }
- } else {
- switch (*str) {
- case '"':
- case '\\':
- AppendGListByte(&pplist, '\\');
- default:
- AppendGListByte(&pplist, *str);
- }
- }
- str++;
- }
-}
-
-static void CPrep_DumpString(UInt8 *str, short len) {
- while (len--) {
- if (*str < 32) {
- AppendGListByte(&pplist, '\\');
- switch (*str) {
- case 7:
- AppendGListByte(&pplist, 'a');
- break;
- case 8:
- AppendGListByte(&pplist, 'b');
- break;
- case 12:
- AppendGListByte(&pplist, 'f');
- break;
- case 10:
- AppendGListByte(&pplist, 'n');
- break;
- case 13:
- AppendGListByte(&pplist, 'r');
- break;
- case 9:
- AppendGListByte(&pplist, 't');
- break;
- case 11:
- AppendGListByte(&pplist, 'v');
- break;
- default:
- if (*str >= 8)
- AppendGListByte(&pplist, '0' + (*str / 8));
- AppendGListByte(&pplist, '0' + (*str % 8));
- }
- } else {
- switch (*str) {
- case '"':
- case '\\':
- AppendGListByte(&pplist, '\\');
- default:
- AppendGListByte(&pplist, *str);
- }
- }
- str++;
- }
-}
-
-void CPrep_Preprocess(void) {
- short innertoken;
- short token;
- char startToken;
- char endToken;
- int depth;
- Boolean save_asmpoundcomment; // r16
- Boolean save_cplusplus; // r15
- char *p;
-
- startToken = 0;
- depth = 0;
-
- if (InitGList(&pplist, 10000))
- CError_NoMem();
-
- nlflag = 0;
- spaceskip = 0;
-
- if ((token = lex())) {
- do {
- if (nlflag) {
- if (!copts.line_prepdump)
- AppendGListData(&pplist, "\r", 1);
- } else {
- if (spaceskip)
- AppendGListByte(&pplist, ' ');
- }
-
- while (1) {
- switch ((innertoken = token)) {
- case '(':
- case ')':
- case '{':
- case '}':
- AppendGListByte(&pplist, token);
- if (cprep_nostring) {
- if (innertoken == startToken) {
- depth++;
- } else if (innertoken == endToken) {
- if (--depth == 0) {
- cprep_nostring = 0;
- in_assembler = 0;
- copts.cplusplus = save_cplusplus;
- copts.asmpoundcomment = save_asmpoundcomment;
- }
- }
- }
- break;
-
- case TK_INTCONST:
- case TK_FLOATCONST:
- if (tokenstacklevel > 0)
- p = macropos;
- else
- p = prep_file_start + ts_current[-1].tokenoffset;
- AppendGListData(&pplist, p, pos - p);
- break;
-
- case TK_IDENTIFIER:
- AppendGListData(&pplist, tkidentifier->name, strlen(tkidentifier->name));
- break;
-
- case TK_AUTO:
- AppendGListData(&pplist, "auto", 4);
- break;
- case TK_REGISTER:
- AppendGListData(&pplist, "register", 8);
- break;
- case TK_STATIC:
- AppendGListData(&pplist, "static", 6);
- break;
- case TK_EXTERN:
- AppendGListData(&pplist, "extern", 6);
- break;
- case TK_TYPEDEF:
- AppendGListData(&pplist, "typedef", 7);
- break;
- case TK_INLINE:
- AppendGListData(&pplist, "inline", 6);
- break;
- case TK_VOID:
- AppendGListData(&pplist, "void", 4);
- break;
- case TK_CHAR:
- AppendGListData(&pplist, "char", 4);
- break;
- case TK_SHORT:
- AppendGListData(&pplist, "short", 5);
- break;
- case TK_INT:
- AppendGListData(&pplist, "int", 3);
- break;
- case TK_LONG:
- AppendGListData(&pplist, "long", 4);
- break;
- case TK_FLOAT:
- AppendGListData(&pplist, "float", 5);
- break;
- case TK_DOUBLE:
- AppendGListData(&pplist, "double", 6);
- break;
- case TK_SIGNED:
- AppendGListData(&pplist, "signed", 6);
- break;
- case TK_UNSIGNED:
- AppendGListData(&pplist, "unsigned", 8);
- break;
- case TK_STRUCT:
- AppendGListData(&pplist, "struct", 6);
- break;
- case TK_UNION:
- AppendGListData(&pplist, "union", 5);
- break;
- case TK_ENUM:
- AppendGListData(&pplist, "enum", 4);
- break;
- case TK_CLASS:
- AppendGListData(&pplist, "class", 5);
- break;
- case TK_CONST:
- AppendGListData(&pplist, "const", 5);
- break;
- case TK_VOLATILE:
- AppendGListData(&pplist, "volatile", 8);
- break;
- case TK_PASCAL:
- AppendGListData(&pplist, "pascal", 6);
- break;
- case TK_UU_FAR:
- AppendGListData(&pplist, "__far", 5);
- break;
- case TK_ONEWAY:
- AppendGListData(&pplist, "oneway", 6);
- break;
- case TK_IN:
- AppendGListData(&pplist, "in", 2);
- break;
- case TK_OUT:
- AppendGListData(&pplist, "out", 3);
- break;
- case TK_INOUT:
- AppendGListData(&pplist, "inout", 5);
- break;
- case TK_BYCOPY:
- AppendGListData(&pplist, "bycopy", 6);
- break;
- case TK_BYREF:
- AppendGListData(&pplist, "byref", 5);
- break;
- case TK_ASM:
- AppendGListData(&pplist, "asm", 3);
- endToken = 0;
- startToken = 0;
- AppendGListByte(&pplist, ' ');
- token = lex();
- if (token == TK_VOLATILE || (token == TK_IDENTIFIER && !strcmp(tkidentifier->name, "__volatile__"))) {
- AppendGListData(&pplist, "volatile", 8);
- token = lex();
- }
- if (token) {
- if (token < ' ' || token > 255)
- continue;
- AppendGListByte(&pplist, token);
-
- if (token == '(') {
- startToken = '(';
- endToken = ')';
- } else if (token == '{') {
- startToken = '{';
- endToken = '}';
- } else {
- continue;
- }
-
- cprep_nostring = 1;
- in_assembler = 1;
- depth = 1;
- save_asmpoundcomment = copts.asmpoundcomment;
- save_cplusplus = copts.cplusplus;
-
- token = lex();
- if (token == '"') {
- AppendGListByte(&pplist, token);
- copts.cplusplus = 0;
- copts.asmpoundcomment = 1;
- break;
- } else if (token == 0) {
- break;
- }
- continue;
- }
- break;
-
- case TK_CASE:
- AppendGListData(&pplist, "case", 4);
- break;
- case TK_DEFAULT:
- AppendGListData(&pplist, "default", 7);
- break;
- case TK_IF:
- AppendGListData(&pplist, "if", 2);
- break;
- case TK_ELSE:
- AppendGListData(&pplist, "else", 4);
- break;
- case TK_SWITCH:
- AppendGListData(&pplist, "switch", 6);
- break;
- case TK_WHILE:
- AppendGListData(&pplist, "while", 5);
- break;
- case TK_DO:
- AppendGListData(&pplist, "do", 2);
- break;
- case TK_FOR:
- AppendGListData(&pplist, "for", 3);
- break;
- case TK_GOTO:
- AppendGListData(&pplist, "goto", 4);
- break;
- case TK_CONTINUE:
- AppendGListData(&pplist, "continue", 8);
- break;
- case TK_BREAK:
- AppendGListData(&pplist, "break", 5);
- break;
- case TK_RETURN:
- AppendGListData(&pplist, "return", 6);
- break;
- case TK_SIZEOF:
- AppendGListData(&pplist, "sizeof", 6);
- break;
- case TK_CATCH:
- AppendGListData(&pplist, "catch", 5);
- break;
- case TK_DELETE:
- AppendGListData(&pplist, "delete", 6);
- break;
- case TK_FRIEND:
- AppendGListData(&pplist, "friend", 6);
- break;
- case TK_NEW:
- AppendGListData(&pplist, "new", 3);
- break;
- case TK_OPERATOR:
- AppendGListData(&pplist, "operator", 8);
- break;
- case TK_PRIVATE:
- AppendGListData(&pplist, "private", 7);
- break;
- case TK_PROTECTED:
- AppendGListData(&pplist, "protected", 9);
- break;
- case TK_PUBLIC:
- AppendGListData(&pplist, "public", 6);
- break;
- case TK_TEMPLATE:
- AppendGListData(&pplist, "template", 8);
- break;
- case TK_THIS:
- AppendGListData(&pplist, "this", 4);
- break;
- case TK_THROW:
- AppendGListData(&pplist, "throw", 5);
- break;
- case TK_TRY:
- AppendGListData(&pplist, "try", 3);
- break;
- case TK_VIRTUAL:
- AppendGListData(&pplist, "virtual", 7);
- break;
- case TK_INHERITED:
- AppendGListData(&pplist, "inherited", 9);
- break;
- case TK_CONST_CAST:
- AppendGListData(&pplist, "const_cast", 10);
- break;
- case TK_DYNAMIC_CAST:
- AppendGListData(&pplist, "dynamic_cast", 12);
- break;
- case TK_EXPLICIT:
- AppendGListData(&pplist, "explicit", 8);
- break;
- case TK_MUTABLE:
- AppendGListData(&pplist, "mutable", 7);
- break;
- case TK_NAMESPACE:
- AppendGListData(&pplist, "namespace", 9);
- break;
- case TK_REINTERPRET_CAST:
- AppendGListData(&pplist, "reinterpret_cast", 16);
- break;
- case TK_STATIC_CAST:
- AppendGListData(&pplist, "static_cast", 11);
- break;
- case TK_USING:
- AppendGListData(&pplist, "using", 5);
- break;
- case TK_WCHAR_T:
- AppendGListData(&pplist, "wchar_t", 7);
- break;
- case TK_TYPENAME:
- AppendGListData(&pplist, "typename", 8);
- break;
- case TK_TRUE:
- AppendGListData(&pplist, "true", 4);
- break;
- case TK_FALSE:
- AppendGListData(&pplist, "false", 5);
- break;
- case TK_TYPEID:
- AppendGListData(&pplist, "typeid", 6);
- break;
- case TK_EXPORT:
- AppendGListData(&pplist, "export", 6);
- break;
- case TK_UU_STDCALL:
- AppendGListData(&pplist, "__stdcall", 9);
- break;
- case TK_UU_CDECL:
- AppendGListData(&pplist, "__cdecl", 7);
- break;
- case TK_UU_FASTCALL:
- AppendGListData(&pplist, "__fastcall", 10);
- break;
- case TK_UU_DECLSPEC:
- AppendGListData(&pplist, "__declspec", 10);
- break;
- case TK_MULT_ASSIGN:
- AppendGListData(&pplist, "*=", 2);
- break;
- case TK_DIV_ASSIGN:
- AppendGListData(&pplist, "/=", 2);
- break;
- case TK_MOD_ASSIGN:
- AppendGListData(&pplist, "%=", 2);
- break;
- case TK_ADD_ASSIGN:
- AppendGListData(&pplist, "+=", 2);
- break;
- case TK_SUB_ASSIGN:
- AppendGListData(&pplist, "-=", 2);
- break;
- case TK_SHL_ASSIGN:
- AppendGListData(&pplist, "<<=", 3);
- break;
- case TK_SHR_ASSIGN:
- AppendGListData(&pplist, ">>=", 3);
- break;
- case TK_AND_ASSIGN:
- AppendGListData(&pplist, "&=", 2);
- break;
- case TK_XOR_ASSIGN:
- AppendGListData(&pplist, "^=", 2);
- break;
- case TK_OR_ASSIGN:
- AppendGListData(&pplist, "|=", 2);
- break;
- case TK_LOGICAL_OR:
- AppendGListData(&pplist, "||", 2);
- break;
- case TK_LOGICAL_AND:
- AppendGListData(&pplist, "&&", 2);
- break;
- case TK_LOGICAL_EQ:
- AppendGListData(&pplist, "==", 2);
- break;
- case TK_LOGICAL_NE:
- AppendGListData(&pplist, "!=", 2);
- break;
- case TK_LESS_EQUAL:
- AppendGListData(&pplist, "<=", 2);
- break;
- case TK_GREATER_EQUAL:
- AppendGListData(&pplist, ">=", 2);
- break;
- case TK_SHL:
- AppendGListData(&pplist, "<<", 2);
- break;
- case TK_SHR:
- AppendGListData(&pplist, ">>", 2);
- break;
- case TK_INCREMENT:
- AppendGListData(&pplist, "++", 2);
- break;
- case TK_DECREMENT:
- AppendGListData(&pplist, "--", 2);
- break;
- case TK_ARROW:
- AppendGListData(&pplist, "->", 2);
- break;
- case TK_ELLIPSIS:
- AppendGListData(&pplist, "...", 3);
- break;
- case TK_DOT_STAR:
- AppendGListData(&pplist, ".*", 2);
- break;
- case TK_ARROW_STAR:
- AppendGListData(&pplist, "->*", 3);
- break;
- case TK_COLON_COLON:
- AppendGListData(&pplist, "::", 2);
- break;
- case TK_AT_INTERFACE:
- AppendGListData(&pplist, "@interface", 10);
- break;
- case TK_AT_IMPLEMENTATION:
- AppendGListData(&pplist, "@implementation", 15);
- break;
- case TK_AT_PROTOCOL:
- AppendGListData(&pplist, "@protocol", 9);
- break;
- case TK_AT_END:
- AppendGListData(&pplist, "@end", 4);
- break;
- case TK_AT_PRIVATE:
- AppendGListData(&pplist, "@private", 8);
- break;
- case TK_AT_PROTECTED:
- AppendGListData(&pplist, "@protected", 10);
- break;
- case TK_AT_PUBLIC:
- AppendGListData(&pplist, "@public", 7);
- break;
- case TK_AT_CLASS:
- AppendGListData(&pplist, "@class", 6);
- break;
- case TK_AT_SELECTOR:
- AppendGListData(&pplist, "@selector", 9);
- break;
- case TK_AT_ENCODE:
- AppendGListData(&pplist, "@encode", 7);
- break;
- case TK_AT_DEFS:
- AppendGListData(&pplist, "@defs", 5);
- break;
- case TK_SELF:
- AppendGListData(&pplist, "self", 4);
- break;
- case TK_SUPER:
- AppendGListData(&pplist, "super", 5);
- break;
- case TK_BOOL:
- if (!copts.cplusplus && copts.c9x)
- AppendGListData(&pplist, "_Bool", 5);
- else
- AppendGListData(&pplist, "bool", 4);
- break;
- case TK_RESTRICT:
- if (copts.c9x)
- AppendGListData(&pplist, "restrict", 8);
- else
- AppendGListData(&pplist, "__restrict", 10);
- break;
- case TK_UU_VECTOR:
- AppendGListData(&pplist, "__vector", 8);
- break;
- case TK_UU_TYPEOF_UU:
- AppendGListData(&pplist, "__typeof__", 10);
- break;
- case TK_UU_ATTRIBUTE_UU:
- AppendGListData(&pplist, "__attribute__", 13);
- break;
- case TK_UU_ALIGNOF_UU:
- AppendGListData(&pplist, "__alignof__", 11);
- break;
- case TK_UU_UUIDOF:
- AppendGListData(&pplist, "__uuidof", 8);
- break;
- case TK_U_COMPLEX:
- AppendGListData(&pplist, "_Complex", 8);
- break;
- case TK_U_IMAGINARY:
- AppendGListData(&pplist, "_Imaginary", 10);
- break;
-
- case TK_STRING:
- if (ispascalstring) {
- AppendGListData(&pplist, "\"\\p", 3);
- CPrep_DumpString((UInt8 *) tkstring + 1, tksize - 1);
- } else {
- AppendGListByte(&pplist, '"');
- CPrep_DumpString((UInt8 *) tkstring, tksize - 1);
- }
- AppendGListByte(&pplist, '"');
- break;
-
- case TK_STRING_WIDE:
- AppendGListData(&pplist, "L\"", 2);
- CPrep_DumpWString((UInt16 *) tkstring, (tksize / stwchar.size) - 1);
- AppendGListByte(&pplist, '"');
- break;
-
- default:
- if (token >= 32 && token <= 255)
- AppendGListByte(&pplist, token);
- else
- CError_FATAL(563);
- }
- break;
- }
-
- CPrep_TokenStreamFlush();
- nlflag = 0;
- spaceskip = 0;
- } while ((token = lex()));
- }
-
- AppendGListByte(&pplist, 0);
- COS_ResizeHandle(pplist.data, pplist.size);
-}