diff --git a/.gitignore b/.gitignore index fb9f31c26..28de63db9 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ gameinfo.dbg gametext.txt makefile - +tags *.glkdata resources/Changes/Output/ diff --git a/docs-src/compiler.inweb b/docs-src/compiler.inweb index 646c3b8fd..f29162d46 100755 --- a/docs-src/compiler.inweb +++ b/docs-src/compiler.inweb @@ -23,22 +23,21 @@ or other standard C compilers. \ / \|/ \|/ syntax tree - | kit sources | - (in Inform 6 code) | INFORM7 Stages 2 to 4 + (in Inform 6 code) | INFORM7 Stages 2 to 5 INTER | | \|/ \|/ precompiled Inter trees Inter tree \ / - \ / INFORM7 Stage 5 or INTER + \ / INFORM7 Stage 6 or INTER \|/ \|/ single linked Inter tree / | \ - I / | \ INFORM7 Stage 6 or INTER + / | \ INFORM7 Stage 7 or INTER \|/ \|/ \|/ Inform 6 code C code index mini-website | | - INFORM6 | | CLANG/GCC + INFORM6 | | CLANG or GCC \|/ \|/ story file executable | @@ -48,7 +47,7 @@ or other standard C compilers. = @ The Inform 7 transpiler, then, occupies the top two-thirds of the above diagram. -Broadly speaking, it runs in six stages, and the code for each stage is made +Broadly speaking, it runs in seven stages, and the code for each stage is made up of one or more "modules", as follows: (*) Stage 1. A build manager called //supervisor// gathers what must be compiled. (*) Stage 2. //core// organises compilation of a single Inform project, @@ -60,15 +59,16 @@ provide "plugins" to this process with additional features, adapting the languag for interactive fiction. (*) Stage 4. //imperative// and //runtime// turn the constructs from Stage 3 into an intermediate bytecode format called Inter. -(*) Stage 5. //bytecode//, //building// and //pipeline// manage, create, link -and optimise this Inter code. -(*) Stage 6. //final// generates final code and //index// generates human-readable +(*) Stage 5. //bytecode// and //building// manage and create Inter code. This is +more of a layer than a stage, providing services to Stages 4, 6 and 7. +(*) Stage 6. //pipeline// links and optimises this Inter code. +(*) Stage 7. //final// generates final code and //index// generates human-readable Index pages, which forn a small website about the project. Inform 7 presents as three command-line tools, not one: //inbuild//, //inform7// and //inter//. Really, though, they are three points of access to the same code base. //inbuild// contains Stage 1 as a stand-alone tool, //inter// contains Stages -5 and 6 as a stand-alone tool, and //inform7// is the entire compiler (Stages 1 to 6) +5 to 7 as a stand-alone tool, and //inform7// is the entire compiler (Stages 1 to 7) in one. Each tool has its own CLI (or "command-line interface"): see //inbuild: Manual//, //inform7: Manual//, //inter: Manual// and //inbuild: Reference Card//, //inform7: Reference Card//, //inter: Reference Card//. @@ -97,10 +97,11 @@ The full breakdown of these three tools into modules is as follows: . . +------------------+ +------------------------+ . . . . | //bytecode//-module | } . . . . | //building//-module | } Stage 5 - . . . . | //pipeline//-module | } . . . . | ------------------------- | - . . . . | //final//-module | } - . . . . | //index//-module | } Stage 6 + . . . . | //pipeline//-module | } Stage 6 + . . . . | ------------------------- | + . . . . | //final//-module | } Stage 7 + . . . . | //index//-module | } . . . . +---------------------------+ . . . . . . +-----------------------------------------------------------------------+ diff --git a/docs/compiler.html b/docs/compiler.html index dc4df6210..c82da13fc 100644 --- a/docs/compiler.html +++ b/docs/compiler.html @@ -88,22 +88,21 @@ or other standard C compilers. \ / \|/ \|/ syntax tree - | kit sources | - (in Inform 6 code) | INFORM7 Stages 2 to 4 + (in Inform 6 code) | INFORM7 Stages 2 to 5 INTER | | \|/ \|/ precompiled Inter trees Inter tree \ / - \ / INFORM7 Stage 5 or INTER + \ / INFORM7 Stage 6 or INTER \|/ \|/ single linked Inter tree / | \ - I / | \ INFORM7 Stage 6 or INTER + / | \ INFORM7 Stage 7 or INTER \|/ \|/ \|/ Inform 6 code C code index mini-website | | - INFORM6 | | CLANG/GCC + INFORM6 | | CLANG or GCC \|/ \|/ story file executable | @@ -112,7 +111,7 @@ or other standard C compilers. playable website
§2. The Inform 7 transpiler, then, occupies the top two-thirds of the above diagram. -Broadly speaking, it runs in six stages, and the code for each stage is made +Broadly speaking, it runs in seven stages, and the code for each stage is made up of one or more "modules", as follows:
@@ -126,15 +125,16 @@ provide "plugins" to this process with additional features, adapting the languag for interactive fiction.Inform 7 presents as three command-line tools, not one: inbuild, inform7 and inter. Really, though, they are three points of access to the same code base. inbuild contains Stage 1 as a stand-alone tool, inter contains Stages -5 and 6 as a stand-alone tool, and inform7 is the entire compiler (Stages 1 to 6) +5 to 7 as a stand-alone tool, and inform7 is the entire compiler (Stages 1 to 7) in one. Each tool has its own CLI (or "command-line interface"): see Manual (in inbuild), Manual (in inform7), Manual (in inter) and Reference Card (in inbuild), Reference Card (in inform7), Reference Card (in inter). @@ -166,10 +166,11 @@ in one. Each tool has its own CLI (or "command-line interface"): see . . +------------------+ +------------------------+ . . . . | bytecode-module | } . . . . | building-module | } Stage 5 - . . . . | pipeline-module | } . . . . | ------------------------- | - . . . . | final-module | } - . . . . | index-module | } Stage 6 + . . . . | pipeline-module | } Stage 6 + . . . . | ------------------------- | + . . . . | final-module | } Stage 7 + . . . . | index-module | } . . . . +---------------------------+ . . . . . . +-----------------------------------------------------------------------+ diff --git a/docs/core-module/P-wtmd.html b/docs/core-module/P-wtmd.html index 500b3fcd7..91f91c273 100644 --- a/docs/core-module/P-wtmd.html +++ b/docs/core-module/P-wtmd.html @@ -107,8 +107,6 @@ values and descriptions are parsed and then stored within the compiler. imperative module, the part of Inform most resembling a conventional compiler.
There are then two expansion packs, as it were: the if and multimedia modules, which do nothing essential but add support for interactive fiction diff --git a/docs/docs-assets/Extracts-Colours.css b/docs/docs-assets/Extracts-Colours.css new file mode 100644 index 000000000..a6038534f --- /dev/null +++ b/docs/docs-assets/Extracts-Colours.css @@ -0,0 +1,39 @@ +/* The following correspond to the Inweb colours !definition, ..., !comment: */ + +span.Extracts-definition-syntax { color: #444444; } +span.Extracts-function-syntax { color: #C00000; } +span.Extracts-identifier-syntax { color: #4040ff; } +span.Extracts-element-syntax { color: #40407f; } +span.Extracts-reserved-syntax { color: #600000; } +span.Extracts-string-syntax { color: #408040; } +span.Extracts-character-syntax { color: #204020; } +span.Extracts-constant-syntax { color: #804020; } +span.Extracts-plain-syntax { color: #000000; } +span.Extracts-extract-syntax { color: #444444; } +span.Extracts-comment-syntax { color: #404040; font-style:italic; } + +/* This is used for the "define" or "enum" keyword on Inweb-defined constants: */ + +span.Extracts-definition-keyword { color:#801010; font-weight:bold; } + +/* These are for the angle-bracketed paragraph names: */ + +span.Extracts-named-paragraph, span.Extracts-named-paragraph-defn { color: #000000; font-size: 90%; } +span.Extracts-named-paragraph-number { color: #000000; font-size: 70%; font-style:italic; } +span.Extracts-named-paragraph-container { + background: #ececf8; border: 1px solid #888888; +} +a.named-paragraph-link:link, a.named-paragraph-link:visited { + text-decoration: none; +} +a.named-paragraph-link:active, a.named-paragraph-link:hover { + background: #c8c8e8; +} + +/* This is the box into which multi-line stretches of code are put: */ + +pre.Extracts-displayed-code { + background: #FFFFE0; + border: 1px dashed #cccccc; +} + diff --git a/docs/final-module/5-fnc.html b/docs/final-module/5-fnc.html index db23a411e..4be3bd2b7 100644 --- a/docs/final-module/5-fnc.html +++ b/docs/final-module/5-fnc.html @@ -21,6 +21,7 @@ function togglePopup(material_id) { +
@@ -77,6 +78,543 @@ function togglePopup(material_id) { ++#include <stdlib.h> +#include <stdio.h> + +typedef int i7val; +typedef unsigned char i7byte; +typedef struct i7varargs { + i7val args[10]; +} i7varargs; + +i7val i7_tmp = 0; +int i7_seed = 197; + +i7val i7_prop_value(i7val obj, i7val pr) { + printf("Unimplemented: i7_prop_value.\n"); + return 0; +} + +#define i7_cpv_SET 1 +#define i7_cpv_PREDEC 2 +#define i7_cpv_POSTDEC 3 +#define i7_cpv_PREINC 4 +#define i7_cpv_POSTINC 5 + +void i7_assign(i7val owner, i7val prop, i7val val, i7val inst) { + printf("Unimplemented: i7_assign.\n"); +} + +i7val i7_change_prop_value(i7val obj, i7val pr, i7val to, int way) { + i7val val = i7_prop_value(obj, pr), new_val = val; + switch (way) { + case i7_cpv_SET: i7_assign(obj, pr, to, 1); new_val = to; break; + case i7_cpv_PREDEC: new_val = val; i7_assign(obj, pr, val-1, 1); break; + case i7_cpv_POSTDEC: new_val = val-1; i7_assign(obj, pr, new_val, 1); break; + case i7_cpv_PREINC: new_val = val; i7_assign(obj, pr, val+1, 1); break; + case i7_cpv_POSTINC: new_val = val+1; i7_assign(obj, pr, new_val, 1); break; + } + return new_val; +} + +void i7_give(i7val owner, i7val prop, i7val val) { + i7_assign(owner, prop, val, 1); +} + +i7val i7_prop_len(i7val obj, i7val pr) { + printf("Unimplemented: i7_prop_len.\n"); + return 0; +} + +i7val i7_prop_addr(i7val obj, i7val pr) { + printf("Unimplemented: i7_prop_addr.\n"); + return 0; +} + +#define I7BYTE_3(V) ((V & 0xFF000000) >> 24) +#define I7BYTE_2(V) ((V & 0x00FF0000) >> 16) +#define I7BYTE_1(V) ((V & 0x0000FF00) >> 8) +#define I7BYTE_0(V) (V & 0x000000FF) + +i7val i7_lookup(i7byte i7bytes[], i7val offset, i7val ind) { + ind = offset + 4*ind; + return ((i7val) i7bytes[ind]) + 0x100*((i7val) i7bytes[ind+1]) + + 0x10000*((i7val) i7bytes[ind+2]) + 0x1000000*((i7val) i7bytes[ind+3]); +} + +i7val write_i7_lookup(i7byte i7bytes[], i7val offset, i7val ind, i7val V, int way) { + i7val val = i7_lookup(i7bytes, offset, ind); + i7val RV = V; + switch (way) { + case i7_cpv_PREDEC: RV = val; V = val-1; break; + case i7_cpv_POSTDEC: RV = val-1; V = val-1; break; + case i7_cpv_PREINC: RV = val; V = val+1; break; + case i7_cpv_POSTINC: RV = val+1; V = val+1; break; + } + ind = offset + 4*ind; + i7bytes[ind] = I7BYTE_0(V); + i7bytes[ind+1] = I7BYTE_1(V); + i7bytes[ind+2] = I7BYTE_2(V); + i7bytes[ind+3] = I7BYTE_3(V); + return RV; +} + +void glulx_accelfunc(i7val x, i7val y) { + printf("Unimplemented: glulx_accelfunc.\n"); +} + +void glulx_accelparam(i7val x, i7val y) { + printf("Unimplemented: glulx_accelparam.\n"); +} + +void glulx_call(i7val x, i7val i7varargc, i7val z) { + printf("Unimplemented: glulx_call.\n"); +} + +void glulx_copy(i7val x, i7val y) { + printf("Unimplemented: glulx_copy.\n"); +} + +void glulx_div(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_div.\n"); +} + +void glulx_exp(i7val x, i7val y) { + printf("Unimplemented: glulx_exp.\n"); +} + +void glulx_fadd(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_fadd.\n"); +} + +void glulx_fdiv(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_fdiv.\n"); +} + +void glulx_floor(i7val x, i7val y) { + printf("Unimplemented: glulx_floor.\n"); +} + +void glulx_fmod(i7val x, i7val y, i7val z, i7val w) { + printf("Unimplemented: glulx_fmod.\n"); +} + +void glulx_fmul(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_fmul.\n"); +} + +void glulx_fsub(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_fsub.\n"); +} + +void glulx_ftonumn(i7val x, i7val y) { + printf("Unimplemented: glulx_ftonumn.\n"); +} + +void glulx_ftonumz(i7val x, i7val y) { + printf("Unimplemented: glulx_ftonumz.\n"); +} + +void glulx_gestalt(i7val x, i7val y, i7val *z) { + *z = 1; +} + +void glulx_glk(i7val glk_api_selector, i7val i7varargc, i7val *z) { + int rv = 0; + switch (glk_api_selector) { + case 4: // selectpr for glk_gestalt + rv = 1; break; + case 32: // selector for glk_window_iterate + rv = 0; break; + case 35: // selector for glk_window_open + rv = 1; break; + case 47: // selector for glk_set_window + rv = 0; break; + case 64: // selector for glk_stream_iterate + rv = 0; break; + case 100: // selector for glk_fileref_iterate + rv = 0; break; + case 176: // selector for glk_stylehint_set + rv = 0; break; + case 240: // selector for glk_schannel_iterate + rv = 0; break; + case 242: // selector for glk_schannel_create + rv = 0; break; + default: + printf("Unimplemented: glulx_glk %d.\n", glk_api_selector); + rv = 0; break; + } + if (z) *z = rv; +} + +int glulx_jeq(i7val x, i7val y) { + printf("Unimplemented: glulx_jeq.\n"); + return 0; +} + +int glulx_jfeq(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_jfeq.\n"); + return 0; +} + +int glulx_jfge(i7val x, i7val y) { + printf("Unimplemented: glulx_jfge.\n"); + return 0; +} + +int glulx_jflt(i7val x, i7val y) { + printf("Unimplemented: glulx_jflt.\n"); + return 0; +} + +int glulx_jisinf(i7val x) { + printf("Unimplemented: glulx_jisinf.\n"); + return 0; +} + +int glulx_jisnan(i7val x) { + printf("Unimplemented: glulx_jisnan.\n"); + return 0; +} + +int glulx_jleu(i7val x, i7val y) { + printf("Unimplemented: glulx_jleu.\n"); + return 0; +} + +int glulx_jnz(i7val x) { + printf("Unimplemented: glulx_jnz.\n"); + return 0; +} + +int glulx_jz(i7val x) { + printf("Unimplemented: glulx_jz.\n"); + return 0; +} + +void glulx_log(i7val x, i7val y) { + printf("Unimplemented: glulx_log.\n"); +} + +void glulx_malloc(i7val x, i7val y) { + printf("Unimplemented: glulx_malloc.\n"); +} + +void glulx_mcopy(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_mcopy.\n"); +} + +void glulx_mfree(i7val x) { + printf("Unimplemented: glulx_mfree.\n"); +} + +void glulx_mod(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_mod.\n"); +} + +void glulx_neg(i7val x, i7val y) { + printf("Unimplemented: glulx_neg.\n"); +} + +void glulx_numtof(i7val x, i7val y) { + printf("Unimplemented: glulx_numtof.\n"); +} + +void glulx_quit(void) { + printf("Unimplemented: glulx_quit.\n"); +} + +void glulx_random(i7val x, i7val y) { + printf("Unimplemented: glulx_random.\n"); +} + +void glulx_setiosys(i7val x, i7val y) { + // Deliberately ignored: we are using stdout, not glk +} + +void glulx_setrandom(i7val x) { + i7_seed = (int) x; +} + +void glulx_streamchar(i7val x) { + printf("%c", (int) x); +} + +void glulx_streamnum(i7val x) { + printf("Unimplemented: glulx_streamnum.\n"); +} + +void glulx_streamstr(i7val x) { + printf("Unimplemented: glulx_streamstr.\n"); +} + +void glulx_streamunichar(i7val x) { + printf("%c", (int) x); +} + +void glulx_sub(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_sub.\n"); +} + +void glulx_ushiftr(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_ushiftr.\n"); +} + +void glulx_acos(i7val x, i7val *y) { + printf("Unimplemented: glulx_acos\n"); +} + +void glulx_aload(i7val x, i7val y, i7val *z) { + printf("Unimplemented: glulx_aload\n"); +} + +void glulx_aloadb(i7val x, i7val y, i7val *z) { + printf("Unimplemented: glulx_aloadb\n"); +} + +void glulx_aloads(i7val x, i7val y, i7val *z) { + printf("Unimplemented: glulx_aloads\n"); +} + +void glulx_asin(i7val x, i7val *y) { + printf("Unimplemented: glulx_asin\n"); +} + +void glulx_atan(i7val x, i7val *y) { + printf("Unimplemented: glulx_atan\n"); +} + +void glulx_binarysearch(i7val l1, i7val l2, i7val l3, i7val l4, i7val l5, i7val l6, i7val l7, i7val *s1) { + printf("Unimplemented: glulx_binarysearch\n"); +} + +void glulx_ceil(i7val x, i7val *y) { + printf("Unimplemented: glulx_ceil\n"); +} + +void glulx_cos(i7val x, i7val *y) { + printf("Unimplemented: glulx_cos\n"); +} + +void glulx_pow(i7val x, i7val y, i7val *z) { + printf("Unimplemented: glulx_pow\n"); +} + +void glulx_shiftl(i7val x, i7val y, i7val *z) { + printf("Unimplemented: glulx_shiftl\n"); +} + +void glulx_sin(i7val x, i7val *y) { + printf("Unimplemented: glulx_sin\n"); +} + +void glulx_sqrt(i7val x, i7val *y) { + printf("Unimplemented: glulx_sqrt\n"); +} + +void glulx_tan(i7val x, i7val *y) { + printf("Unimplemented: glulx_tan\n"); +} + + + +int i7_has(i7val obj, i7val attr) { + printf("Unimplemented: i7_has.\n"); + return 0; +} + +int i7_ofclass(i7val obj, i7val cl) { + printf("Unimplemented: i7_ofclass.\n"); + return 0; +} + +void i7_print_address(i7val x) { + printf("Unimplemented: i7_print_address.\n"); +} + +void i7_print_char(i7val x) { + printf("%c", (int) x); +} + +void i7_print_def_art(i7val x) { + printf("Unimplemented: i7_print_def_art.\n"); +} + +void i7_print_cdef_art(i7val x) { + printf("Unimplemented: i7_print_cdef_art.\n"); +} + +void i7_print_indef_art(i7val x) { + printf("Unimplemented: i7_print_indef_art.\n"); +} + +void i7_print_name(i7val x) { + printf("Unimplemented: i7_print_name.\n"); +} + +void i7_print_object(i7val x) { + printf("Unimplemented: i7_print_object.\n"); +} + +void i7_print_property(i7val x) { + printf("Unimplemented: i7_print_property.\n"); +} + +int i7_provides(i7val obj, i7val prop) { + printf("Unimplemented: i7_provides.\n"); + return 0; +} + +i7val i7_pull(void) { + printf("Unimplemented: i7_pull.\n"); + return (i7val) 0; +} + +void i7_push(i7val x) { + printf("Unimplemented: i7_push.\n"); +} + +#define i7_bold 1 +#define i7_roman 2 + +void i7_style(int what) { +} + +i7val fn_i7_mgl_metaclass(int n, i7val v) { + printf("Unimplemented: fn_i7_mgl_metaclass.\n"); + return 0; +} + +i7val fn_i7_mgl_random(int n, i7val v) { + if (i7_seed < 1000) return ((i7val) ((i7_seed++) % n)); + i7_seed = i7_seed*i7_seed; + return (((i7_seed*i7_seed) & 0xFF00) / 0x100) % n; +} + +i7val i7_gen_call(i7val fn_ref, i7val *args, int argc, int call_message) { + printf("Unimplemented: i7_gen_call.\n"); + return 0; +} + +i7val i7_call_0(i7val fn_ref) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + return i7_gen_call(fn_ref, args, 0, 0); +} + +i7val fn_i7_mgl_indirect(int n, i7val v) { + return i7_call_0(v); +} + +i7val i7_call_1(i7val fn_ref, i7val v) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; + return i7_gen_call(fn_ref, args, 1, 0); +} + +i7val i7_call_2(i7val fn_ref, i7val v, i7val v2) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; args[1] = v2; + return i7_gen_call(fn_ref, args, 2, 0); +} + +i7val i7_call_3(i7val fn_ref, i7val v, i7val v2, i7val v3) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; args[1] = v2; args[2] = v3; + return i7_gen_call(fn_ref, args, 3, 0); +} + +i7val i7_call_4(i7val fn_ref, i7val v, i7val v2, i7val v3, i7val v4) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; args[1] = v2; args[2] = v3; args[3] = v4; + return i7_gen_call(fn_ref, args, 4, 0); +} + +i7val i7_call_5(i7val fn_ref, i7val v, i7val v2, i7val v3, i7val v4, i7val v5) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; args[1] = v2; args[2] = v3; args[3] = v4; args[4] = v5; + return i7_gen_call(fn_ref, args, 5, 0); +} + +i7val i7_ccall_0(i7val fn_ref) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + return i7_gen_call(fn_ref, args, 0, 1); +} + +i7val i7_ccall_1(i7val fn_ref, i7val v) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; + return i7_gen_call(fn_ref, args, 1, 1); +} + +i7val i7_ccall_2(i7val fn_ref, i7val v, i7val v2) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; args[1] = v2; + return i7_gen_call(fn_ref, args, 2, 1); +} + +i7val i7_ccall_3(i7val fn_ref, i7val v, i7val v2, i7val v3) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; args[1] = v2; args[2] = v3; + return i7_gen_call(fn_ref, args, 3, 1); +} + +i7val fn_i7_mgl_Z__Region(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_Z__Region.\n"); + return 0; +} + +i7val fn_i7_mgl_CP__Tab(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_CP__Tab.\n"); + return 0; +} + +i7val fn_i7_mgl_RA__Pr(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_RA__Pr.\n"); + return 0; +} + +i7val fn_i7_mgl_RL__Pr(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_RL__Pr.\n"); + return 0; +} + +i7val fn_i7_mgl_OC__Cl(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_OC__Cl.\n"); + return 0; +} + +i7val fn_i7_mgl_RV__Pr(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_RV__Pr.\n"); + return 0; +} + +i7val fn_i7_mgl_OP__Pr(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_OP__Pr.\n"); + return 0; +} + +i7val fn_i7_mgl_CA__Pr(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_CA__Pr.\n"); + return 0; +} + +i7val i7_mgl_sharp_classes_table = 0; +i7val i7_mgl_NUM_ATTR_BYTES = 0; +i7val i7_mgl_sharp_cpv__start = 0; +i7val i7_mgl_sharp_identifiers_table = 0; +i7val i7_mgl_sharp_globals_array = 0; +i7val i7_mgl_sharp_gself = 0; +i7val i7_mgl_sharp_dict_par2 = 0; +i7val i7_mgl_sharp_dictionary_table = 0; +i7val i7_mgl_sharp_grammar_table = 0; + +#define i7_mgl_FLOAT_NAN 0 ++
And then: +
+code_generation_target *c_target = NULL; void CodeGen::C::create_target(void) { diff --git a/inblorb/.gitignore b/inblorb/.gitignore index f2af04c86..c7cfec19b 100644 --- a/inblorb/.gitignore +++ b/inblorb/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/inbuild/.gitignore b/inbuild/.gitignore index 63078e2e4..d9b2ee171 100644 --- a/inbuild/.gitignore +++ b/inbuild/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/indoc/.gitignore b/indoc/.gitignore index 96ac53b90..8be9c0c80 100644 --- a/indoc/.gitignore +++ b/indoc/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/inform7/.gitignore b/inform7/.gitignore index d16eab089..e7d7836df 100644 --- a/inform7/.gitignore +++ b/inform7/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/inform7/Figures/timings-diagnostics.txt b/inform7/Figures/timings-diagnostics.txt index fbc41ee86..96f03180e 100644 --- a/inform7/Figures/timings-diagnostics.txt +++ b/inform7/Figures/timings-diagnostics.txt @@ -1,6 +1,6 @@ 100.0% in inform7 run 55.5% in compilation to Inter - 40.4% in //Sequence::undertake_queued_tasks// + 40.6% in //Sequence::undertake_queued_tasks// 3.4% in //MajorNodes::pre_pass// 2.6% in //MajorNodes::pass_1// 1.5% in //RTPhrasebook::compile_entries// @@ -20,8 +20,8 @@ 42.5% in running Inter pipeline 10.7% in step preparation 9.6% in inter step 7/14: consolidate-text - 8.2% in inter step 14/14: generate inform6 -> auto.inf - 8.1% in inter step 2/14: link + 8.1% in inter step 14/14: generate inform6 -> auto.inf + 8.0% in inter step 2/14: link 1.5% in inter step 10/14: make-identifiers-unique 0.4% in inter step 11/14: reconcile-verbs 0.2% in inter step 13/14: eliminate-redundant-operations @@ -32,6 +32,6 @@ 0.1% in inter step 3/14: merge-template <- none 0.1% in inter step 4/14: parse-linked-matter 0.1% in inter step 5/14: resolve-conditional-compilation - 2.1% not specifically accounted for + 2.4% not specifically accounted for 1.6% in supervisor 0.3% not specifically accounted for diff --git a/inform7/Internal/Miscellany/inform7_clib.h b/inform7/Internal/Miscellany/inform7_clib.h index 7e32a2749..b832efcde 100644 --- a/inform7/Internal/Miscellany/inform7_clib.h +++ b/inform7/Internal/Miscellany/inform7_clib.h @@ -10,7 +10,6 @@ typedef struct i7varargs { i7val i7_tmp = 0; int i7_seed = 197; - i7val i7_prop_value(i7val obj, i7val pr) { printf("Unimplemented: i7_prop_value.\n"); return 0; diff --git a/inform7/core-module/Preliminaries/What This Module Does.w b/inform7/core-module/Preliminaries/What This Module Does.w index c8c9376ad..b4a68231d 100644 --- a/inform7/core-module/Preliminaries/What This Module Does.w +++ b/inform7/core-module/Preliminaries/What This Module Does.w @@ -39,8 +39,6 @@ values and descriptions are parsed and then stored within the compiler. //imperative// module, the part of Inform most resembling a conventional compiler. (*) The //runtime// module compiles run-time support functions and data structures needed to make Inform's many concepts work at run-time. -(*) Last and least, the //index// module makes the browsable HTML-format index -for a compiled project, viewable in the Inform user interface applications. There are then two expansion packs, as it were: the //if// and //multimedia// modules, which do nothing essential but add support for interactive fiction diff --git a/inpolicy/.gitignore b/inpolicy/.gitignore index d5629e680..06434a4fe 100644 --- a/inpolicy/.gitignore +++ b/inpolicy/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/inrtps/.gitignore b/inrtps/.gitignore index 6bb4e8527..ff343bc26 100644 --- a/inrtps/.gitignore +++ b/inrtps/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/inter/.gitignore b/inter/.gitignore index 2f1a6a778..ad82cd649 100644 --- a/inter/.gitignore +++ b/inter/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/inter/building-test/.gitignore b/inter/building-test/.gitignore index e97c0de53..bd0c53264 100644 --- a/inter/building-test/.gitignore +++ b/inter/building-test/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/inter/final-module/Chapter 5/Final C.w b/inter/final-module/Chapter 5/Final C.w index e9e3964eb..102239f7d 100644 --- a/inter/final-module/Chapter 5/Final C.w +++ b/inter/final-module/Chapter 5/Final C.w @@ -4,6 +4,542 @@ To generate I6 code from intermediate code. @h Target. += (text to inform7_clib.h) +#include+#include + +typedef int i7val; +typedef unsigned char i7byte; +typedef struct i7varargs { + i7val args[10]; +} i7varargs; + +i7val i7_tmp = 0; +int i7_seed = 197; + +i7val i7_prop_value(i7val obj, i7val pr) { + printf("Unimplemented: i7_prop_value.\n"); + return 0; +} + +#define i7_cpv_SET 1 +#define i7_cpv_PREDEC 2 +#define i7_cpv_POSTDEC 3 +#define i7_cpv_PREINC 4 +#define i7_cpv_POSTINC 5 + +void i7_assign(i7val owner, i7val prop, i7val val, i7val inst) { + printf("Unimplemented: i7_assign.\n"); +} + +i7val i7_change_prop_value(i7val obj, i7val pr, i7val to, int way) { + i7val val = i7_prop_value(obj, pr), new_val = val; + switch (way) { + case i7_cpv_SET: i7_assign(obj, pr, to, 1); new_val = to; break; + case i7_cpv_PREDEC: new_val = val; i7_assign(obj, pr, val-1, 1); break; + case i7_cpv_POSTDEC: new_val = val-1; i7_assign(obj, pr, new_val, 1); break; + case i7_cpv_PREINC: new_val = val; i7_assign(obj, pr, val+1, 1); break; + case i7_cpv_POSTINC: new_val = val+1; i7_assign(obj, pr, new_val, 1); break; + } + return new_val; +} + +void i7_give(i7val owner, i7val prop, i7val val) { + i7_assign(owner, prop, val, 1); +} + +i7val i7_prop_len(i7val obj, i7val pr) { + printf("Unimplemented: i7_prop_len.\n"); + return 0; +} + +i7val i7_prop_addr(i7val obj, i7val pr) { + printf("Unimplemented: i7_prop_addr.\n"); + return 0; +} + +#define I7BYTE_3(V) ((V & 0xFF000000) >> 24) +#define I7BYTE_2(V) ((V & 0x00FF0000) >> 16) +#define I7BYTE_1(V) ((V & 0x0000FF00) >> 8) +#define I7BYTE_0(V) (V & 0x000000FF) + +i7val i7_lookup(i7byte i7bytes[], i7val offset, i7val ind) { + ind = offset + 4*ind; + return ((i7val) i7bytes[ind]) + 0x100*((i7val) i7bytes[ind+1]) + + 0x10000*((i7val) i7bytes[ind+2]) + 0x1000000*((i7val) i7bytes[ind+3]); +} + +i7val write_i7_lookup(i7byte i7bytes[], i7val offset, i7val ind, i7val V, int way) { + i7val val = i7_lookup(i7bytes, offset, ind); + i7val RV = V; + switch (way) { + case i7_cpv_PREDEC: RV = val; V = val-1; break; + case i7_cpv_POSTDEC: RV = val-1; V = val-1; break; + case i7_cpv_PREINC: RV = val; V = val+1; break; + case i7_cpv_POSTINC: RV = val+1; V = val+1; break; + } + ind = offset + 4*ind; + i7bytes[ind] = I7BYTE_0(V); + i7bytes[ind+1] = I7BYTE_1(V); + i7bytes[ind+2] = I7BYTE_2(V); + i7bytes[ind+3] = I7BYTE_3(V); + return RV; +} + +void glulx_accelfunc(i7val x, i7val y) { + printf("Unimplemented: glulx_accelfunc.\n"); +} + +void glulx_accelparam(i7val x, i7val y) { + printf("Unimplemented: glulx_accelparam.\n"); +} + +void glulx_call(i7val x, i7val i7varargc, i7val z) { + printf("Unimplemented: glulx_call.\n"); +} + +void glulx_copy(i7val x, i7val y) { + printf("Unimplemented: glulx_copy.\n"); +} + +void glulx_div(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_div.\n"); +} + +void glulx_exp(i7val x, i7val y) { + printf("Unimplemented: glulx_exp.\n"); +} + +void glulx_fadd(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_fadd.\n"); +} + +void glulx_fdiv(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_fdiv.\n"); +} + +void glulx_floor(i7val x, i7val y) { + printf("Unimplemented: glulx_floor.\n"); +} + +void glulx_fmod(i7val x, i7val y, i7val z, i7val w) { + printf("Unimplemented: glulx_fmod.\n"); +} + +void glulx_fmul(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_fmul.\n"); +} + +void glulx_fsub(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_fsub.\n"); +} + +void glulx_ftonumn(i7val x, i7val y) { + printf("Unimplemented: glulx_ftonumn.\n"); +} + +void glulx_ftonumz(i7val x, i7val y) { + printf("Unimplemented: glulx_ftonumz.\n"); +} + +void glulx_gestalt(i7val x, i7val y, i7val *z) { + *z = 1; +} + +void glulx_glk(i7val glk_api_selector, i7val i7varargc, i7val *z) { + int rv = 0; + switch (glk_api_selector) { + case 4: // selectpr for glk_gestalt + rv = 1; break; + case 32: // selector for glk_window_iterate + rv = 0; break; + case 35: // selector for glk_window_open + rv = 1; break; + case 47: // selector for glk_set_window + rv = 0; break; + case 64: // selector for glk_stream_iterate + rv = 0; break; + case 100: // selector for glk_fileref_iterate + rv = 0; break; + case 176: // selector for glk_stylehint_set + rv = 0; break; + case 240: // selector for glk_schannel_iterate + rv = 0; break; + case 242: // selector for glk_schannel_create + rv = 0; break; + default: + printf("Unimplemented: glulx_glk %d.\n", glk_api_selector); + rv = 0; break; + } + if (z) *z = rv; +} + +int glulx_jeq(i7val x, i7val y) { + printf("Unimplemented: glulx_jeq.\n"); + return 0; +} + +int glulx_jfeq(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_jfeq.\n"); + return 0; +} + +int glulx_jfge(i7val x, i7val y) { + printf("Unimplemented: glulx_jfge.\n"); + return 0; +} + +int glulx_jflt(i7val x, i7val y) { + printf("Unimplemented: glulx_jflt.\n"); + return 0; +} + +int glulx_jisinf(i7val x) { + printf("Unimplemented: glulx_jisinf.\n"); + return 0; +} + +int glulx_jisnan(i7val x) { + printf("Unimplemented: glulx_jisnan.\n"); + return 0; +} + +int glulx_jleu(i7val x, i7val y) { + printf("Unimplemented: glulx_jleu.\n"); + return 0; +} + +int glulx_jnz(i7val x) { + printf("Unimplemented: glulx_jnz.\n"); + return 0; +} + +int glulx_jz(i7val x) { + printf("Unimplemented: glulx_jz.\n"); + return 0; +} + +void glulx_log(i7val x, i7val y) { + printf("Unimplemented: glulx_log.\n"); +} + +void glulx_malloc(i7val x, i7val y) { + printf("Unimplemented: glulx_malloc.\n"); +} + +void glulx_mcopy(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_mcopy.\n"); +} + +void glulx_mfree(i7val x) { + printf("Unimplemented: glulx_mfree.\n"); +} + +void glulx_mod(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_mod.\n"); +} + +void glulx_neg(i7val x, i7val y) { + printf("Unimplemented: glulx_neg.\n"); +} + +void glulx_numtof(i7val x, i7val y) { + printf("Unimplemented: glulx_numtof.\n"); +} + +void glulx_quit(void) { + printf("Unimplemented: glulx_quit.\n"); +} + +void glulx_random(i7val x, i7val y) { + printf("Unimplemented: glulx_random.\n"); +} + +void glulx_setiosys(i7val x, i7val y) { + // Deliberately ignored: we are using stdout, not glk +} + +void glulx_setrandom(i7val x) { + i7_seed = (int) x; +} + +void glulx_streamchar(i7val x) { + printf("%c", (int) x); +} + +void glulx_streamnum(i7val x) { + printf("Unimplemented: glulx_streamnum.\n"); +} + +void glulx_streamstr(i7val x) { + printf("Unimplemented: glulx_streamstr.\n"); +} + +void glulx_streamunichar(i7val x) { + printf("%c", (int) x); +} + +void glulx_sub(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_sub.\n"); +} + +void glulx_ushiftr(i7val x, i7val y, i7val z) { + printf("Unimplemented: glulx_ushiftr.\n"); +} + +void glulx_acos(i7val x, i7val *y) { + printf("Unimplemented: glulx_acos\n"); +} + +void glulx_aload(i7val x, i7val y, i7val *z) { + printf("Unimplemented: glulx_aload\n"); +} + +void glulx_aloadb(i7val x, i7val y, i7val *z) { + printf("Unimplemented: glulx_aloadb\n"); +} + +void glulx_aloads(i7val x, i7val y, i7val *z) { + printf("Unimplemented: glulx_aloads\n"); +} + +void glulx_asin(i7val x, i7val *y) { + printf("Unimplemented: glulx_asin\n"); +} + +void glulx_atan(i7val x, i7val *y) { + printf("Unimplemented: glulx_atan\n"); +} + +void glulx_binarysearch(i7val l1, i7val l2, i7val l3, i7val l4, i7val l5, i7val l6, i7val l7, i7val *s1) { + printf("Unimplemented: glulx_binarysearch\n"); +} + +void glulx_ceil(i7val x, i7val *y) { + printf("Unimplemented: glulx_ceil\n"); +} + +void glulx_cos(i7val x, i7val *y) { + printf("Unimplemented: glulx_cos\n"); +} + +void glulx_pow(i7val x, i7val y, i7val *z) { + printf("Unimplemented: glulx_pow\n"); +} + +void glulx_shiftl(i7val x, i7val y, i7val *z) { + printf("Unimplemented: glulx_shiftl\n"); +} + +void glulx_sin(i7val x, i7val *y) { + printf("Unimplemented: glulx_sin\n"); +} + +void glulx_sqrt(i7val x, i7val *y) { + printf("Unimplemented: glulx_sqrt\n"); +} + +void glulx_tan(i7val x, i7val *y) { + printf("Unimplemented: glulx_tan\n"); +} + + + +int i7_has(i7val obj, i7val attr) { + printf("Unimplemented: i7_has.\n"); + return 0; +} + +int i7_ofclass(i7val obj, i7val cl) { + printf("Unimplemented: i7_ofclass.\n"); + return 0; +} + +void i7_print_address(i7val x) { + printf("Unimplemented: i7_print_address.\n"); +} + +void i7_print_char(i7val x) { + printf("%c", (int) x); +} + +void i7_print_def_art(i7val x) { + printf("Unimplemented: i7_print_def_art.\n"); +} + +void i7_print_cdef_art(i7val x) { + printf("Unimplemented: i7_print_cdef_art.\n"); +} + +void i7_print_indef_art(i7val x) { + printf("Unimplemented: i7_print_indef_art.\n"); +} + +void i7_print_name(i7val x) { + printf("Unimplemented: i7_print_name.\n"); +} + +void i7_print_object(i7val x) { + printf("Unimplemented: i7_print_object.\n"); +} + +void i7_print_property(i7val x) { + printf("Unimplemented: i7_print_property.\n"); +} + +int i7_provides(i7val obj, i7val prop) { + printf("Unimplemented: i7_provides.\n"); + return 0; +} + +i7val i7_pull(void) { + printf("Unimplemented: i7_pull.\n"); + return (i7val) 0; +} + +void i7_push(i7val x) { + printf("Unimplemented: i7_push.\n"); +} + +#define i7_bold 1 +#define i7_roman 2 + +void i7_style(int what) { +} + +i7val fn_i7_mgl_metaclass(int n, i7val v) { + printf("Unimplemented: fn_i7_mgl_metaclass.\n"); + return 0; +} + +i7val fn_i7_mgl_random(int n, i7val v) { + if (i7_seed < 1000) return ((i7val) ((i7_seed++) % n)); + i7_seed = i7_seed*i7_seed; + return (((i7_seed*i7_seed) & 0xFF00) / 0x100) % n; +} + +i7val i7_gen_call(i7val fn_ref, i7val *args, int argc, int call_message) { + printf("Unimplemented: i7_gen_call.\n"); + return 0; +} + +i7val i7_call_0(i7val fn_ref) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + return i7_gen_call(fn_ref, args, 0, 0); +} + +i7val fn_i7_mgl_indirect(int n, i7val v) { + return i7_call_0(v); +} + +i7val i7_call_1(i7val fn_ref, i7val v) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; + return i7_gen_call(fn_ref, args, 1, 0); +} + +i7val i7_call_2(i7val fn_ref, i7val v, i7val v2) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; args[1] = v2; + return i7_gen_call(fn_ref, args, 2, 0); +} + +i7val i7_call_3(i7val fn_ref, i7val v, i7val v2, i7val v3) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; args[1] = v2; args[2] = v3; + return i7_gen_call(fn_ref, args, 3, 0); +} + +i7val i7_call_4(i7val fn_ref, i7val v, i7val v2, i7val v3, i7val v4) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; args[1] = v2; args[2] = v3; args[3] = v4; + return i7_gen_call(fn_ref, args, 4, 0); +} + +i7val i7_call_5(i7val fn_ref, i7val v, i7val v2, i7val v3, i7val v4, i7val v5) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; args[1] = v2; args[2] = v3; args[3] = v4; args[4] = v5; + return i7_gen_call(fn_ref, args, 5, 0); +} + +i7val i7_ccall_0(i7val fn_ref) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + return i7_gen_call(fn_ref, args, 0, 1); +} + +i7val i7_ccall_1(i7val fn_ref, i7val v) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; + return i7_gen_call(fn_ref, args, 1, 1); +} + +i7val i7_ccall_2(i7val fn_ref, i7val v, i7val v2) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; args[1] = v2; + return i7_gen_call(fn_ref, args, 2, 1); +} + +i7val i7_ccall_3(i7val fn_ref, i7val v, i7val v2, i7val v3) { + i7val args[10]; for (int i=0; i<10; i++) args[i] = 0; + args[0] = v; args[1] = v2; args[2] = v3; + return i7_gen_call(fn_ref, args, 3, 1); +} + +i7val fn_i7_mgl_Z__Region(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_Z__Region.\n"); + return 0; +} + +i7val fn_i7_mgl_CP__Tab(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_CP__Tab.\n"); + return 0; +} + +i7val fn_i7_mgl_RA__Pr(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_RA__Pr.\n"); + return 0; +} + +i7val fn_i7_mgl_RL__Pr(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_RL__Pr.\n"); + return 0; +} + +i7val fn_i7_mgl_OC__Cl(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_OC__Cl.\n"); + return 0; +} + +i7val fn_i7_mgl_RV__Pr(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_RV__Pr.\n"); + return 0; +} + +i7val fn_i7_mgl_OP__Pr(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_OP__Pr.\n"); + return 0; +} + +i7val fn_i7_mgl_CA__Pr(int argc, i7val x) { + printf("Unimplemented: fn_i7_mgl_CA__Pr.\n"); + return 0; +} + +i7val i7_mgl_sharp_classes_table = 0; +i7val i7_mgl_NUM_ATTR_BYTES = 0; +i7val i7_mgl_sharp_cpv__start = 0; +i7val i7_mgl_sharp_identifiers_table = 0; +i7val i7_mgl_sharp_globals_array = 0; +i7val i7_mgl_sharp_gself = 0; +i7val i7_mgl_sharp_dict_par2 = 0; +i7val i7_mgl_sharp_dictionary_table = 0; +i7val i7_mgl_sharp_grammar_table = 0; + +#define i7_mgl_FLOAT_NAN 0 += + +And then: + = code_generation_target *c_target = NULL; void CodeGen::C::create_target(void) { diff --git a/scripts/gitignorescript.txt b/scripts/gitignorescript.txt index 5952deae0..953f2a5c2 100644 --- a/scripts/gitignorescript.txt +++ b/scripts/gitignorescript.txt @@ -6,7 +6,7 @@ gameinfo.dbg gametext.txt makefile - +tags *.glkdata resources/Changes/Output/ diff --git a/scripts/makescript.txt b/scripts/makescript.txt index 999701534..674153721 100644 --- a/scripts/makescript.txt +++ b/scripts/makescript.txt @@ -122,19 +122,25 @@ INFORM6X = inform6/Tangled/inform6 # makes everything, disregarding all timestamps on files. .PHONY: all - all: tools kits srules localintegration .PHONY: force - force: forcetools forcekits forcesrules localintegration .PHONY: localintegration -localintegration: inform7/Internal/Languages/English/Syntax.preform +localintegration: \ + inform7/Internal/Languages/English/Syntax.preform \ + inform7/Internal/Miscellany/inform7_clib.h inform7/Internal/Languages/English/Syntax.preform: inform7/Tangled/Syntax.preform cp -f 'inform7/Tangled/Syntax.preform' "inform7/Internal/Languages/English/Syntax.preform" +inform7/Internal/Miscellany/inform7_clib.h: inform7/Tangled/inform7_clib.h + cp -f 'inform7/Tangled/inform7_clib.h' "inform7/Internal/Miscellany/inform7_clib.h" + +inform7/Tangled/inform7_clib.h: inter/final-module/Chapter\ 5/*.w + $(INWEBX) $(INTERTOOLWEB) -tangle + # (Of course those other four phony targets are yet to be defined.) # ----------------------------------------------------------------------------- diff --git a/services/arch-test/.gitignore b/services/arch-test/.gitignore index e97c0de53..bd0c53264 100644 --- a/services/arch-test/.gitignore +++ b/services/arch-test/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/services/calculus-test/.gitignore b/services/calculus-test/.gitignore index e97c0de53..bd0c53264 100644 --- a/services/calculus-test/.gitignore +++ b/services/calculus-test/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/services/inflections-test/.gitignore b/services/inflections-test/.gitignore index e97c0de53..bd0c53264 100644 --- a/services/inflections-test/.gitignore +++ b/services/inflections-test/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/services/kinds-test/.gitignore b/services/kinds-test/.gitignore index e97c0de53..bd0c53264 100644 --- a/services/kinds-test/.gitignore +++ b/services/kinds-test/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/services/linguistics-test/.gitignore b/services/linguistics-test/.gitignore index e97c0de53..bd0c53264 100644 --- a/services/linguistics-test/.gitignore +++ b/services/linguistics-test/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/services/problems-test/.gitignore b/services/problems-test/.gitignore index e97c0de53..bd0c53264 100644 --- a/services/problems-test/.gitignore +++ b/services/problems-test/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/services/syntax-test/.gitignore b/services/syntax-test/.gitignore index e97c0de53..bd0c53264 100644 --- a/services/syntax-test/.gitignore +++ b/services/syntax-test/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform diff --git a/services/words-test/.gitignore b/services/words-test/.gitignore index e97c0de53..bd0c53264 100644 --- a/services/words-test/.gitignore +++ b/services/words-test/.gitignore @@ -2,6 +2,7 @@ # and is not intended for human editing debug-log.txt +tags Woven/ Tangled/ !Tangled/*.preform