}
while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL));
}
- else if (IS (q, MODE_SYMBOL))
+ else if (IS (q, MODE_SYMBOL) || a68_whether (q, PUBLIC_SYMBOL, MODE_SYMBOL, STOP))
{
bool siga = true;
+ bool is_public = false;
+
+ if (IS (q, PUBLIC_SYMBOL))
+ {
+ is_public = true;
+ FORWARD (q);
+ }
+
do
{
FORWARD (q);
if (a68_add_mode (&TOP_MOID (&A68_JOB), INDICANT, 0, q, NO_MOID, NO_PACK) == NO_MOID)
gcc_unreachable ();
ATTRIBUTE (q) = DEFINING_INDICANT;
+ PUBLICIZED (q) = is_public;
FORWARD (q);
ATTRIBUTE (q) = ALT_EQUALS_SYMBOL;
q = skip_pack_declarer (NEXT (q));
NODE_T *q = p;
while (q != NO_NODE)
{
- if (IS (q, PRIO_SYMBOL))
+ if (IS (q, PRIO_SYMBOL) || a68_whether (q, PUBLIC_SYMBOL, PRIO_SYMBOL, STOP))
{
bool siga = true;
+ bool is_public = false;
+
+ if (IS (q, PUBLIC_SYMBOL))
+ {
+ is_public = true;
+ FORWARD (q);
+ }
+
do
{
FORWARD (q);
NODE_T *y = q;
a68_error (q, "invalid operator tag");
ATTRIBUTE (q) = DEFINING_OPERATOR;
+ PUBLICIZED (q) = is_public;
/* Remove one superfluous operator, and hope it was only
one. */
NEXT (q) = NEXT_NEXT (q);
{
NODE_T *y = q;
ATTRIBUTE (q) = DEFINING_OPERATOR;
+ PUBLICIZED (q) = is_public;
FORWARD (q);
ATTRIBUTE (q) = ALT_EQUALS_SYMBOL;
FORWARD (q);
{
NODE_T *y = q;
ATTRIBUTE (q) = DEFINING_OPERATOR;
+ PUBLICIZED (q) = is_public;
FORWARD (q);
ATTRIBUTE (q) = ALT_EQUALS_SYMBOL;
FORWARD (q);
if (len > 2 && NSYMBOL (q)[len - 2] == ':' && NSYMBOL (q)[len - 3] != '=')
a68_error (q, "probably a missing symbol near invalid operator S");
ATTRIBUTE (q) = DEFINING_OPERATOR;
+ PUBLICIZED (q) = is_public;
insert_alt_equals (q);
q = NEXT_NEXT (q);
int k;
while (q != NO_NODE)
{
- if (!IS (q, OP_SYMBOL))
- FORWARD (q);
- else
+ if (IS (q, OP_SYMBOL) || a68_whether (q, PUBLIC_SYMBOL, OP_SYMBOL, STOP))
{
bool siga = true;
bool in_proc = true;
+ bool is_public = false;
+
+ if (IS (q, PUBLIC_SYMBOL))
+ {
+ is_public = true;
+ FORWARD (q);
+ }
+
/* Skip operator plan. */
if (NEXT (q) != NO_NODE && IS (NEXT (q), OPEN_SYMBOL))
{
{
a68_error (q, "invalid operator tag");
ATTRIBUTE (q) = DEFINING_OPERATOR;
+ PUBLICIZED (q) = is_public;
TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP);
if (t == NO_TAG)
gcc_unreachable ();
|| a68_whether (q, EQUALS_SYMBOL, EQUALS_SYMBOL, STOP))
{
ATTRIBUTE (q) = DEFINING_OPERATOR;
+ PUBLICIZED (q) = is_public;
TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP);
if (t == NO_TAG)
gcc_unreachable ();
else if (a68_whether (q, BOLD_TAG, EQUALS_SYMBOL, STOP))
{
ATTRIBUTE (q) = DEFINING_OPERATOR;
+ PUBLICIZED (q) = is_public;
TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP);
if (t == NO_TAG)
gcc_unreachable ();
if (len > 2 && NSYMBOL (q)[len - 2] == ':' && NSYMBOL (q)[len - 3] != '=')
a68_error (q, "probably a missing symbol near invalid operator S");
ATTRIBUTE (q) = DEFINING_OPERATOR;
+ PUBLICIZED (q) = is_public;
insert_alt_equals (q);
TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP);
if (t == NO_TAG)
while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL));
}
}
+ else
+ FORWARD (q);
}
}
while (q != NO_NODE)
{
- if (a68_whether (q, DECLARER, IDENTIFIER, EQUALS_SYMBOL, STOP))
+ if (a68_whether (q, DECLARER, IDENTIFIER, EQUALS_SYMBOL, STOP)
+ || a68_whether (q, PUBLIC_SYMBOL, DECLARER, IDENTIFIER, EQUALS_SYMBOL, STOP))
{
bool siga = true;
+ bool is_public = false;
+
+ if (IS (q, PUBLIC_SYMBOL))
+ {
+ is_public = true;
+ FORWARD (q);
+ }
+
do
{
if (a68_whether ((FORWARD (q)), IDENTIFIER, EQUALS_SYMBOL, STOP))
if (tag == NO_TAG)
gcc_unreachable ();
ATTRIBUTE (q) = DEFINING_IDENTIFIER;
+ PUBLICIZED (q) = is_public;
FORWARD (q);
ATTRIBUTE (q) = ALT_EQUALS_SYMBOL;
q = skip_unit (q);
if (a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER) == NO_TAG)
gcc_unreachable ();
ATTRIBUTE (q) = DEFINING_IDENTIFIER;
+ PUBLICIZED (q) = is_public;
ATTRIBUTE (FORWARD (q)) = ALT_EQUALS_SYMBOL;
q = skip_unit (q);
}
{
if (a68_whether (q, HEAP_SYMBOL, DECLARER, IDENTIFIER, STOP)
|| a68_whether (q, LOC_SYMBOL, DECLARER, IDENTIFIER, STOP)
- || a68_whether (q, DECLARER, IDENTIFIER, STOP))
+ || a68_whether (q, DECLARER, IDENTIFIER, STOP)
+ || a68_whether (q, PUBLIC_SYMBOL, HEAP_SYMBOL, DECLARER, IDENTIFIER, STOP)
+ || a68_whether (q, PUBLIC_SYMBOL, LOC_SYMBOL, DECLARER, IDENTIFIER, STOP)
+ || a68_whether (q, PUBLIC_SYMBOL, DECLARER, IDENTIFIER, STOP))
{
- if (!IS (q, DECLARER))
+ bool is_public = IS (q, PUBLIC_SYMBOL);
+ while (!IS (q, DECLARER))
FORWARD (q);
bool siga = true;
gcc_unreachable ();
VARIABLE (tag) = true;
ATTRIBUTE (q) = DEFINING_IDENTIFIER;
+ PUBLICIZED (q) = is_public;
q = skip_unit (q);
}
else
while (q != NO_NODE)
{
- if (a68_whether (q, PROC_SYMBOL, IDENTIFIER, EQUALS_SYMBOL, STOP))
+ if (a68_whether (q, PROC_SYMBOL, IDENTIFIER, EQUALS_SYMBOL, STOP)
+ || a68_whether (q, PUBLIC_SYMBOL, PROC_SYMBOL, IDENTIFIER, EQUALS_SYMBOL, STOP))
{
bool siga = true;
+ bool is_public = false;
+
+ if (IS (q, PUBLIC_SYMBOL))
+ {
+ is_public = true;
+ FORWARD (q);
+ }
+
do
{
FORWARD (q);
TAG_T *t = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER);
IN_PROC (t) = true;
ATTRIBUTE (q) = DEFINING_IDENTIFIER;
+ PUBLICIZED (q) = is_public;
ATTRIBUTE (FORWARD (q)) = ALT_EQUALS_SYMBOL;
q = skip_unit (q);
}
if (a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER) == NO_TAG)
gcc_unreachable ();
ATTRIBUTE (q) = DEFINING_IDENTIFIER;
+ PUBLICIZED (q) = is_public;
ATTRIBUTE (FORWARD (q)) = ALT_EQUALS_SYMBOL;
q = skip_unit (q);
}
while (q != NO_NODE)
{
- if (a68_whether (q, PROC_SYMBOL, IDENTIFIER, STOP))
+ if (a68_whether (q, PROC_SYMBOL, IDENTIFIER, STOP)
+ || a68_whether (q, PUBLIC_SYMBOL, PROC_SYMBOL, IDENTIFIER, STOP))
{
bool siga = true;
+ bool is_public = false;
+
+ if (IS (q, PUBLIC_SYMBOL))
+ {
+ is_public = true;
+ FORWARD (q);
+ }
+
do
{
FORWARD (q);
gcc_assert (tag != NO_TAG);
VARIABLE (tag) = true;
ATTRIBUTE (q) = DEFINING_IDENTIFIER;
+ PUBLICIZED (q) = is_public;
q = skip_unit (FORWARD (q));
}
else if (a68_whether (q, IDENTIFIER, EQUALS_SYMBOL, STOP))
TAG_T *tag = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER);
gcc_assert (tag != NO_TAG);
ATTRIBUTE (q) = DEFINING_IDENTIFIER;
+ PUBLICIZED (q) = is_public;
ATTRIBUTE (FORWARD (q)) = ASSIGN_SYMBOL;
q = skip_unit (q);
} else