projects
/
inform.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update to commit e33eef4f8fab800eaf4a32b2d159cde6c4bbb38e
[inform.git]
/
src
/
expressp.c
diff --git
a/src/expressp.c
b/src/expressp.c
index 79f7c7a30227b01e69d7cff5c03fab16870eefde..5b3c0a714f99104d565625a5450fe06fe8ab0018 100644
(file)
--- a/
src/expressp.c
+++ b/
src/expressp.c
@@
-1,9
+1,8
@@
/* ------------------------------------------------------------------------- */
/* "expressp" : The expression parser */
/* */
/* ------------------------------------------------------------------------- */
/* "expressp" : The expression parser */
/* */
-/* Copyright (c) Graham Nelson 1993 - 2018 */
-/* */
-/* This file is part of Inform. */
+/* Part of Inform 6.35 */
+/* copyright (c) Graham Nelson 1993 - 2021 */
/* */
/* Inform is free software: you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* */
/* Inform is free software: you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
@@
-68,6
+67,7
@@
static int comma_allowed, arrow_allowed, superclass_allowed,
extern int *variable_usage;
extern int *variable_usage;
+/* Must be at least as many as keyword_group system_functions (currently 12) */
int system_function_usage[32];
static int get_next_etoken(void)
int system_function_usage[32];
static int get_next_etoken(void)
@@
-164,6
+164,9
@@
but not used as a value:", unicode);
case ARRAY_T:
current_token.marker = ARRAY_MV;
break;
case ARRAY_T:
current_token.marker = ARRAY_MV;
break;
+ case STATIC_ARRAY_T:
+ current_token.marker = STATIC_ARRAY_MV;
+ break;
case INDIVIDUAL_PROPERTY_T:
if (module_switch) current_token.marker = IDENT_MV;
break;
case INDIVIDUAL_PROPERTY_T:
if (module_switch) current_token.marker = IDENT_MV;
break;
@@
-814,7
+817,7
@@
static int evaluate_term(token_data t, assembly_operand *o)
o->type = LONG_CONSTANT_OT;
else
o->type = CONSTANT_OT;
o->type = LONG_CONSTANT_OT;
else
o->type = CONSTANT_OT;
- o->value = compile_string(t.text,
FALSE, FALS
E);
+ o->value = compile_string(t.text,
STRCTX_GAM
E);
return(TRUE);
case VARIABLE_TT:
if (!glulx_mode) {
return(TRUE);
case VARIABLE_TT:
if (!glulx_mode) {
@@
-1462,11
+1465,15
@@
static void check_property_operator(int from_node)
if ((below != -1) && (ET[below].right != -1))
{ int n = ET[below].right, flag = FALSE;
if ((below != -1) && (ET[below].right != -1))
{ int n = ET[below].right, flag = FALSE;
+ /* Can we handle this dot operator as a native @get_prop (etc)
+ opcode? Only if we recognize the property value as a declared
+ common property constant. */
if ((ET[n].down == -1)
&& ((ET[n].value.type == LONG_CONSTANT_OT)
|| (ET[n].value.type == SHORT_CONSTANT_OT))
&& ((ET[n].value.value > 0) && (ET[n].value.value < 64))
if ((ET[n].down == -1)
&& ((ET[n].value.type == LONG_CONSTANT_OT)
|| (ET[n].value.type == SHORT_CONSTANT_OT))
&& ((ET[n].value.value > 0) && (ET[n].value.value < 64))
- && ((!module_switch) || (ET[n].value.marker == 0)))
+ && (!module_switch)
+ && (ET[n].value.marker == 0))
flag = TRUE;
if (!flag)
flag = TRUE;
if (!flag)