Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/ganelson/inweb
Browse files Browse the repository at this point in the history
  • Loading branch information
ganelson committed Sep 21, 2023
2 parents 693bd05 + e95d2eb commit e06e4b0
Show file tree
Hide file tree
Showing 8 changed files with 179 additions and 139 deletions.
12 changes: 7 additions & 5 deletions Materials/platforms/inweb-on-linux.mk
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,17 @@ EXEEXTENSION =
INTEST = intest/Tangled/intest
INWEB = inweb/Tangled/inweb

CC = clang

CCOPTS = -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -DPLATFORM_LINUX \
-fdiagnostics-color=auto $(CFLAGS)

MANYWARNINGS = -Wall -Wextra -Wimplicit-fallthrough=2 -Wno-pointer-to-int-cast \
-Wno-unknown-pragmas -Wno-unused-but-set-parameter \
-Wno-unused-but-set-variable -Wno-unused-function -Wno-unused-parameter \
-Wno-unused-variable -fmax-errors=1000
MANYWARNINGS = -Wall -Wextra -Wno-unknown-warning-option \
-Wno-declaration-after-statement -Wno-deprecated-non-prototype \
-Wno-unused-but-set-variable -Wno-unused-parameter

FEWERWARNINGS = -Wno-implicit-int
FEWERWARNINGS = -Wno-constant-conversion -Wno-dangling-else -Wno-format \
-Wno-implicit-int -Wno-pointer-sign

ME = inweb
FTEST = $(ME)/foundation-test
Expand Down
12 changes: 7 additions & 5 deletions Materials/platforms/linux.mk
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@ EXEEXTENSION =
INTEST = intest/Tangled/intest
INWEB = inweb/Tangled/inweb

CC = clang

CCOPTS = -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -DPLATFORM_LINUX \
-fdiagnostics-color=auto $(CFLAGS)

MANYWARNINGS = -Wall -Wextra -Wimplicit-fallthrough=2 -Wno-pointer-to-int-cast \
-Wno-unknown-pragmas -Wno-unused-but-set-parameter \
-Wno-unused-but-set-variable -Wno-unused-function -Wno-unused-parameter \
-Wno-unused-variable -fmax-errors=1000
MANYWARNINGS = -Wall -Wextra -Wno-unknown-warning-option \
-Wno-declaration-after-statement -Wno-deprecated-non-prototype \
-Wno-unused-but-set-variable -Wno-unused-parameter

FEWERWARNINGS = -Wno-implicit-int
FEWERWARNINGS = -Wno-constant-conversion -Wno-dangling-else -Wno-format \
-Wno-implicit-int -Wno-pointer-sign

32 changes: 22 additions & 10 deletions Materials/platforms/linux.mkscript
Original file line number Diff line number Diff line change
Expand Up @@ -73,23 +73,35 @@ INWEB = inweb/Tangled/inweb

# Where:

# The core Inform tools are recommended to be compiled with Clang. To use GCC or
# your platform's default compiler, set or delete this variable accordingly.
CC = clang

# Source options (_POSIX_C_SOURCE is necessary for readlink()); color error
# messages; pull in optimization and debug flags from whatever is defined in the
# CFLAGS and LDFLAGS environment variables by the Linux packaging config.

CCOPTS = -D_POSIX_C_SOURCE=200112L -D_DEFAULT_SOURCE -DPLATFORM_LINUX \
-fdiagnostics-color=auto $(CFLAGS)

MANYWARNINGS = -Wall -Wextra -Wimplicit-fallthrough=2 -Wno-pointer-to-int-cast \
-Wno-unknown-pragmas -Wno-unused-but-set-parameter \
-Wno-unused-but-set-variable -Wno-unused-function -Wno-unused-parameter \
-Wno-unused-variable -fmax-errors=1000
MANYWARNINGS = -Wall -Wextra -Wno-unknown-warning-option \
-Wno-declaration-after-statement -Wno-deprecated-non-prototype \
-Wno-unused-but-set-variable -Wno-unused-parameter

# To explain those:

# -Wimplicit-fallthrough=2: comments are fallthrough comments as long as they contain the words "fall through"
# -Wno-pointer-to-int-cast: we use the gcc extension allowing (void *) pointers to increment
# -Wno-unknown-pragmas: there is plenty of #pragma clang and we don't want a warning every time it is encountered
# -Wno-unused-*: we don't much care if a function argument, etc. isn't used

FEWERWARNINGS = -Wno-implicit-int
# -Wno-unknown-warning-option: we want to turn off new warnings on later versions of clang but still compile on earlier versions
# -Wno-declaration-after-statement: clang is very zealous about compatibility with C89 even though we are compiling in C99
# -Wno-deprecated-non-prototype: avoids a warning in the plugin code where we pass arguments to a function pointer
# -Wno-unused-but-set-variable: this is harmless, and done deliberately to avoid warnings on other compilers
# -Wno-unused-parameter: we don't much care if a function argument isn't used

FEWERWARNINGS = -Wno-constant-conversion -Wno-dangling-else -Wno-format \
-Wno-implicit-int -Wno-pointer-sign

# For GCC, here is an alternate set:
# MANYWARNINGS = -Wall -Wextra -Wimplicit-fallthrough=2 \
# -Wno-pointer-to-int-cast -Wno-unknown-pragmas \
# -Wno-unused-but-set-parameter -Wno-unused-but-set-variable \
# -Wno-unused-function -Wno-unused-parameter -Wno-unused-variable
# FEWERWARNINGS = -Wno-implicit-int
222 changes: 115 additions & 107 deletions Tangled/inweb.c

Large diffs are not rendered by default.

12 changes: 8 additions & 4 deletions docs/foundation-module/4-jsn.html

Large diffs are not rendered by default.

8 changes: 6 additions & 2 deletions docs/foundation-module/4-pm.html
Original file line number Diff line number Diff line change
Expand Up @@ -472,10 +472,14 @@ <h1><a href="../index.html">
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">IDENTIFIER_CHARCLASS:</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-pm.html#SP2" class="function-link"><span class="function-syntax">Regexp::identifier_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">)) </span><span class="identifier-syntax">match</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PREFORM_CHARCLASS:</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'-'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'_'</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &gt;= </span><span class="character-syntax">'a'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &lt;= </span><span class="character-syntax">'z'</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &gt;= </span><span class="character-syntax">'0'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &lt;= </span><span class="character-syntax">'9'</span><span class="plain-syntax">))) </span><span class="identifier-syntax">match</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &gt;= </span><span class="character-syntax">'0'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &lt;= </span><span class="character-syntax">'9'</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">match</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PREFORMC_CHARCLASS:</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'-'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'_'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">':'</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &gt;= </span><span class="character-syntax">'a'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &lt;= </span><span class="character-syntax">'z'</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &gt;= </span><span class="character-syntax">'0'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &lt;= </span><span class="character-syntax">'9'</span><span class="plain-syntax">))) </span><span class="identifier-syntax">match</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &gt;= </span><span class="character-syntax">'0'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &lt;= </span><span class="character-syntax">'9'</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">match</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LITERAL_CHARCLASS:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">range_to</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">range_from</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">drawn_from</span><span class="plain-syntax">[</span><span class="identifier-syntax">range_from</span><span class="plain-syntax">] == </span><span class="character-syntax">'^'</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">range_from</span><span class="plain-syntax">++; </span><span class="identifier-syntax">reverse</span><span class="plain-syntax"> = </span><span class="identifier-syntax">reverse</span><span class="plain-syntax">?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">;</span>
Expand Down
12 changes: 8 additions & 4 deletions foundation-module/Chapter 4/JSON.w
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,8 @@ JSON_value *JSON::decode_array(JSON_value *array, text_stream *T, int from, int
case '"': quoted = (quoted)?FALSE:TRUE; break;
case '\\': if (quoted) i++; break;
case ',': if ((quoted == FALSE) && ((first_comma < 0) && (bl == 0)))
first_comma = i; break;
first_comma = i;
break;
case '[': case '{': if (quoted == FALSE) bl++; break;
case ']': case '}': if (quoted == FALSE) bl--; break;
}
Expand Down Expand Up @@ -368,7 +369,8 @@ JSON_value *JSON::decode_object(JSON_value *obj, text_stream *T, int from, int t
case '"': quoted = (quoted)?FALSE:TRUE; break;
case '\\': if (quoted) i++; break;
case ',': if ((quoted == FALSE) && ((first_comma < 0) && (bl == 0)))
first_comma = i; break;
first_comma = i;
break;
case '[': case '{': if (quoted == FALSE) bl++; break;
case ']': case '}': if (quoted == FALSE) bl--; break;
}
Expand Down Expand Up @@ -1157,7 +1159,8 @@ JSON_single_requirement *JSON::decode_req_array(JSON_single_requirement *array_s
case '"': quoted = (quoted)?FALSE:TRUE; break;
case '\\': if (quoted) i++; break;
case ',': if ((quoted == FALSE) && ((first_comma < 0) && (bl == 0)))
first_comma = i; break;
first_comma = i;
break;
case '[': case '{': case '(': if (quoted == FALSE) bl++; break;
case ']': case '}': case ')': if (quoted == FALSE) bl--; break;
}
Expand Down Expand Up @@ -1195,7 +1198,8 @@ JSON_single_requirement *JSON::decode_req_object(JSON_single_requirement *obj,
case '"': quoted = (quoted)?FALSE:TRUE; break;
case '\\': if (quoted) i++; break;
case ',': if ((quoted == FALSE) && ((first_comma < 0) && (bl == 0)))
first_comma = i; break;
first_comma = i;
break;
case '[': case '{': case '(': if (quoted == FALSE) bl++; break;
case ']': case '}': case ')': if (quoted == FALSE) bl--; break;
}
Expand Down
8 changes: 6 additions & 2 deletions foundation-module/Chapter 4/Pattern Matching.w
Original file line number Diff line number Diff line change
Expand Up @@ -377,10 +377,14 @@ int Regexp::test_cclass(inchar32_t c, int chcl, int range_from, int range_to, in
case IDENTIFIER_CHARCLASS: if (Regexp::identifier_char(c)) match = TRUE; break;
case PREFORM_CHARCLASS: if ((c == '-') || (c == '_') ||
((c >= 'a') && (c <= 'z')) ||
((c >= '0') && (c <= '9'))) match = TRUE; break;
((c >= '0') && (c <= '9')))
match = TRUE;
break;
case PREFORMC_CHARCLASS: if ((c == '-') || (c == '_') || (c == ':') ||
((c >= 'a') && (c <= 'z')) ||
((c >= '0') && (c <= '9'))) match = TRUE; break;
((c >= '0') && (c <= '9')))
match = TRUE;
break;
case LITERAL_CHARCLASS:
if ((range_to > range_from) && (drawn_from[range_from] == '^')) {
range_from++; reverse = reverse?FALSE:TRUE;
Expand Down

0 comments on commit e06e4b0

Please sign in to comment.