Front page | perl.cvs.parrot |
Postings from January 2009
[svn:parrot] r34870 - trunk/compilers/pirc/new
From:
kjs
Date:
January 3, 2009 03:56
Subject:
[svn:parrot] r34870 - trunk/compilers/pirc/new
Message ID:
20090103115549.679ABCB9FA@x12.develooper.com
Author: kjs
Date: Sat Jan 3 03:55:47 2009
New Revision: 34870
Modified:
trunk/compilers/pirc/new/bcgen.c
trunk/compilers/pirc/new/pir.l
trunk/compilers/pirc/new/pir.y
trunk/compilers/pirc/new/pircompunit.c
trunk/compilers/pirc/new/pircompunit.h
trunk/compilers/pirc/new/piremit.c
trunk/compilers/pirc/new/pirlexer.c
trunk/compilers/pirc/new/pirlexer.h
trunk/compilers/pirc/new/pirparser.c
trunk/compilers/pirc/new/pirparser.h
trunk/compilers/pirc/new/pirpcc.c
Log:
[pirc] Add a new constant type for unicode strings.
+ move unicode string parsing to the lexer
+ const objects now use the value_type enumeration, not the pir_types
+ function docs.
Modified: trunk/compilers/pirc/new/bcgen.c
==============================================================================
--- trunk/compilers/pirc/new/bcgen.c (original)
+++ trunk/compilers/pirc/new/bcgen.c Sat Jan 3 03:55:47 2009
@@ -131,63 +131,6 @@
return oldcount;
}
-/*
-
-=item C<STRING *
-parse_pir_string(bytecode * const bc, char const * const str)>
-
-Parse the PIR string C<str> which is stored as:
-
- <encoding>":"<quoted string>
-
-Encoding can be for instance "iso-8859-1". Example:
-
- iso-8859-1:"hi there".
-
-A Parrot STRING is returned. If no encoding was specified,
-then the default encoding is "ascii".
-
-=cut
-
-*/
-STRING *
-parse_pir_string(bytecode * const bc, char const * const str) {
- /* normal strings that don't specify an encoding are already
- * stripped from their quotes.
- */
- const size_t len = strlen(str);
- fprintf(stderr, "parse pir string() [%s]\n", str);
-
- /* if str contains the unquoted string 'hello', len is 5.
- * only encoding-specifying strings store quotes. Check
- * whether the very last character is a double quote, in
- * which case we know for sure it's an encoding-specifying
- * string. If the last character is not a quote, the string
- * is already stripped, in which case it's a normal string.
- */
- if (str[len - 1] == '"') {
- /* find the location of the colon */
- char *colon = strchr(str, ':');
- char const *encoding;
- char *quotedstring = colon + 1;
-
- PARROT_ASSERT(colon + 1 == '"'); /* after the ":" there must be the opening quote */
-
-
- /* change the colon into a NULL character, so that encoding points to the encoding
- * string. So, [iso-8859-1:"hi there"] becomes [iso-8859-1\0"hi there"].
- */
- *colon = '\0';
- /* the NULL character just added makes sure that encoding only
- * contains the part before the colon
- */
- encoding = str;
-
- return string_unescape_cstring(bc->interp, quotedstring, '"', encoding);
- }
-
- return string_make(bc->interp, str, strlen(str), "ascii", PObj_constant_FLAG);
-}
/*
@@ -211,6 +154,7 @@
return index;
}
+
/*
=item C<int
@@ -465,7 +409,14 @@
/*
-=item C<void()>
+=item C<int
+store_key_bytecode(bytecode * const bc, opcode_t * key)>
+
+Store the bytecode for a key. The bytecode was emitted in an
+array, passed in C<key>. The bytecode is I<unpacked> into the
+current PackFile, pointed to by the interpreter in C<bc>.
+The key PMC is added to the constants table, and the index
+in the constants table is returned.
=cut
@@ -710,6 +661,7 @@
break;
default:
fprintf(stderr, "unknown key type"); /* XXX exception? */
+ namespace_pmc = NULL;
break;
}
return namespace_pmc;
Modified: trunk/compilers/pirc/new/pir.l
==============================================================================
--- trunk/compilers/pirc/new/pir.l (original)
+++ trunk/compilers/pirc/new/pir.l Sat Jan 3 03:55:47 2009
@@ -385,8 +385,28 @@
return TK_STRINGC;
}
-{UNICODE} { /* copy the string completely*/
- yylval->sval = dupstr(yyget_extra(yyscanner), yytext);
+{UNICODE} { /* parse yytext, which contains the encoding, a ':', and the quoted string */
+ char *colon = strchr(yytext, ':');
+ lexer_state *lexer = yyget_extra(yyscanner);
+ ucstring *ustr = (ucstring *)pir_mem_allocate(lexer, sizeof (ucstring));
+ /* copy the encoding part */
+ ustr->encoding = dupstrn(lexer, yytext, colon - yytext);
+ /* the colon becomes a NULL character to end the encoding string */
+ *colon = '\0';
+ /* copy the string contents, strip the quotes. Example:
+ * iso-8859-1:"hi there"
+ * 123456789012345678901
+ *
+ * colon points to the colon, add 2 to point to the first character
+ * in the string ('h'). yyleng is 20 in the example, subtract
+ * string length of the encoding part (10) and 3 for the quotes and colon.
+ */
+
+ ustr->contents = dupstrn(lexer, colon + 2, yyleng - strlen(ustr->encoding) - 3);
+
+ fprintf(stderr, "ucstring: [%s]:[%s]\n", ustr->encoding, ustr->contents);
+
+ yylval->ustr = ustr;
return TK_USTRINGC;
}
"$P"{DIGIT}+ { yylval->ival = atoi(yytext + 2); return TK_PREG; }
Modified: trunk/compilers/pirc/new/pir.y
==============================================================================
--- trunk/compilers/pirc/new/pir.y (original)
+++ trunk/compilers/pirc/new/pir.y Sat Jan 3 03:55:47 2009
@@ -239,6 +239,7 @@
unsigned uval;
char const *sval;
struct constant *cval;
+ struct ucstring *ustr;
struct instruction *instr;
struct expression *expr;
struct target *targ;
@@ -300,7 +301,7 @@
<sval> TK_GOTO "goto"
%token <sval> TK_STRINGC "string constant"
- <sval> TK_USTRINGC "unicode string"
+ <ustr> TK_USTRINGC "unicode string"
<ival> TK_INTC "integer constant"
<dval> TK_NUMC "number constant"
<ival> TK_PREG "PMC register"
@@ -493,6 +494,8 @@
%type <cval> const_tail
constant
+ stringconst
+
/* all exported functions start with "yypir", instead of default "yy". */
%name-prefix="yypir"
@@ -1159,9 +1162,9 @@
get_opinfo(yyscanner);
}
- | target '=' TK_STRINGC
+ | target '=' stringconst
{
- set_instrf(lexer, "set", "%T%s", $1, $3);
+ set_instrf(lexer, "set", "%T%C", $1, $3);
get_opinfo(yyscanner);
}
| target '=' reg
@@ -2007,11 +2010,11 @@
;
const_tail : "int" identifier '=' TK_INTC
- { $$ = new_named_const(lexer, INT_TYPE, $2, $4); }
+ { $$ = new_named_const(lexer, INT_VAL, $2, $4); }
| "num" identifier '=' TK_NUMC
- { $$ = new_named_const(lexer, NUM_TYPE, $2, $4); }
+ { $$ = new_named_const(lexer, NUM_VAL, $2, $4); }
| "string" identifier '=' TK_STRINGC
- { $$ = new_named_const(lexer, STRING_TYPE, $2, $4); }
+ { $$ = new_named_const(lexer, STRING_VAL, $2, $4); }
| TK_STRINGC identifier '=' constant
{ $$ = new_pmc_const($1, $2, $4); }
;
@@ -2025,10 +2028,15 @@
;
-constant : TK_STRINGC { $$ = new_const(lexer, STRING_TYPE, $1); }
- | TK_INTC { $$ = new_const(lexer, INT_TYPE, $1); }
- | TK_NUMC { $$ = new_const(lexer, NUM_TYPE, $1); }
+constant : TK_STRINGC { $$ = new_const(lexer, STRING_VAL, $1); }
+ | TK_INTC { $$ = new_const(lexer, INT_VAL, $1); }
+ | TK_NUMC { $$ = new_const(lexer, NUM_VAL, $1); }
| TK_CONST_VALUE { $$ = $1; }
+ | TK_USTRINGC { $$ = new_const(lexer, USTRING_VAL, $1); }
+ ;
+
+stringconst : TK_STRINGC { $$ = new_const(lexer, STRING_VAL, $1); }
+ | TK_USTRINGC { $$ = new_const(lexer, USTRING_VAL, $1); }
;
rel_op : "!=" { $$ = OP_NE; }
@@ -2203,8 +2211,12 @@
/* the order of these letters match with the pir_type enumeration.
* These are used for generating the full opname (set I0, 10 -> set_i_ic).
+ * The first 5 correspond to the values in the pir_type enumeration,
+ * the last 5 correspond to the values in the value_type enumeration.
+ * Note that the last 's' corresponds to USTRING_VAL, which is a unicode
+ * string, but when used it's still a string.
*/
-static char const type_codes[5] = {'i', 's', 'p', 'n', '?'};
+static char const type_codes[10] = {'i', 's', 'p', 'n', '?', 'i', 's', 'p', 'n', 's'};
/*
@@ -2312,7 +2324,7 @@
"detected 'inc' or 'dec' in fold_i_i()");
break;
}
- return new_const((lexer_state * const)yypirget_extra(yyscanner), INT_TYPE, result);
+ return new_const((lexer_state * const)yypirget_extra(yyscanner), INT_VAL, result);
}
/*
@@ -2396,7 +2408,7 @@
"detected 'inc' or 'dec' in fold_n_i()");
break;
}
- return new_const((lexer_state * const)yypirget_extra(yyscanner), NUM_TYPE, result);
+ return new_const((lexer_state * const)yypirget_extra(yyscanner), NUM_VAL, result);
}
/*
@@ -2480,7 +2492,7 @@
"detected 'inc' or 'dec' in fold_i_n()");
break;
}
- return new_const((lexer_state * const)yypirget_extra(yyscanner), NUM_TYPE, result);
+ return new_const((lexer_state * const)yypirget_extra(yyscanner), NUM_VAL, result);
}
/*
@@ -2565,7 +2577,7 @@
default:
break;
}
- return new_const((lexer_state * const)yypirget_extra(yyscanner), NUM_TYPE, result);
+ return new_const((lexer_state * const)yypirget_extra(yyscanner), NUM_VAL, result);
}
/*
@@ -2587,7 +2599,7 @@
lexer_state *lexer = (lexer_state *)yypirget_extra(yyscanner);
switch (op) {
case OP_CONCAT:
- return new_const(lexer, STRING_TYPE, concat_strings(lexer, a, b));
+ return new_const(lexer, STRING_VAL, concat_strings(lexer, a, b));
case OP_ADD:
case OP_SUB:
@@ -2607,7 +2619,7 @@
case OP_FDIV:
yypirerror(yyscanner, lexer,
"cannot apply binary operator '%s' to arguments of type number", opnames[op]);
- return new_const(lexer, STRING_TYPE, a);
+ return new_const(lexer, STRING_VAL, a);
case OP_ISEQ:
case OP_ISLE:
@@ -2615,7 +2627,7 @@
case OP_ISGE:
case OP_ISGT:
case OP_ISNE:
- return new_const(lexer, INT_TYPE, (1 == evaluate_s_s(a, op, b)));
+ return new_const(lexer, INT_VAL, (1 == evaluate_s_s(a, op, b)));
/* OP_INC and OP_DEC are here only to keep the C compiler happy */
@@ -2795,12 +2807,14 @@
static int
evaluate_c(NOTNULL(lexer_state * const lexer), NOTNULL(constant * const c)) {
switch (c->type) {
- case INT_TYPE:
+ case INT_VAL:
return (c->val.ival != 0);
- case NUM_TYPE:
+ case NUM_VAL:
return (c->val.nval != 0);
- case STRING_TYPE:
+ case STRING_VAL:
return evaluate_s(c->val.sval);
+ case USTRING_VAL:
+ return evaluate_s(c->val.ustr->contents);
default:
panic(lexer, "impossible constant type in evaluate_c()");
return 0;
@@ -2890,9 +2904,9 @@
static int
check_value(NOTNULL(constant * const c), int val) {
switch(c->type) {
- case INT_TYPE:
+ case INT_VAL:
return (c->val.ival == val);
- case NUM_TYPE:
+ case NUM_VAL:
return (c->val.nval == val);
default:
break;
@@ -3309,7 +3323,7 @@
int n;
/* if the key is an integer constant, then signature becomes '_kic', otherwise _kc. */
if (e->expr.k->head->expr->type == EXPR_CONSTANT
- && e->expr.k->head->expr->expr.c->type == INT_TYPE)
+ && e->expr.k->head->expr->expr.c->type == INT_VAL)
n = 3;
else
n = 2;
@@ -3372,7 +3386,7 @@
break;
case EXPR_CONSTANT:
/* integer constant key results in '_kic' signature */
- if (iter->expr.c->type == INT_TYPE)
+ if (iter->expr.c->type == INT_VAL)
*instr_writer++ = 'i';
*instr_writer++ = 'c';
Modified: trunk/compilers/pirc/new/pircompunit.c
==============================================================================
--- trunk/compilers/pirc/new/pircompunit.c (original)
+++ trunk/compilers/pirc/new/pircompunit.c Sat Jan 3 03:55:47 2009
@@ -136,11 +136,11 @@
switch (multitype->type) {
case EXPR_CONSTANT:
- mtype->u.ident = multitype->expr.c->val.sval;
+ mtype->entry.ident = multitype->expr.c->val.sval;
mtype->entry_type = MULTI_TYPE_IDENT;
break;
case EXPR_IDENT:
- mtype->u.ident = multitype->expr.id;
+ mtype->entry.ident = multitype->expr.id;
mtype->entry_type = MULTI_TYPE_IDENT;
break;
case EXPR_KEY:
@@ -477,12 +477,15 @@
int
targets_equal(target const * const left, target const * const right) {
+
if (TEST_FLAG(left->flags, TARGET_FLAG_IS_REG)) { /* if left is a reg */
if (TEST_FLAG(right->flags, TARGET_FLAG_IS_REG)) { /* then right must be a reg */
if ((left->info->type == right->info->type) /* types must match */
&& (left->info->id.regno == right->info->id.regno /* PIR regno must match */
- && (left->info->color == right->info->color))) /* PASM regno must match */
+ && (left->info->color == right->info->color))) { /* PASM regno must match */
+ assert(left->info == right->info);
return TRUE;
+ }
}
else /* left is a reg, right is not */
return FALSE;
@@ -492,8 +495,10 @@
if (!TEST_FLAG(right->flags, TARGET_FLAG_IS_REG) /* right must not be a reg */
&& (left->info->id.name && right->info->id.name /* both must have a name */
- && STREQ(left->info->id.name, right->info->id.name))) /* and they must be equal */
+ && STREQ(left->info->id.name, right->info->id.name))) { /* and they must be equal */
+ assert(left->info == right->info);
return TRUE;
+ }
}
return FALSE;
@@ -902,13 +907,13 @@
expr = expr_from_const(lexer, va_arg(arg_ptr, constant *)); \
break; \
case 'i': /* integer */ \
- expr = expr_from_const(lexer, new_const(lexer, INT_TYPE, va_arg(arg_ptr, int))); \
+ expr = expr_from_const(lexer, new_const(lexer, INT_VAL, va_arg(arg_ptr, int))); \
break; \
case 'n': /* number */ \
- expr = expr_from_const(lexer, new_const(lexer, NUM_TYPE, va_arg(arg_ptr, double))); \
+ expr = expr_from_const(lexer, new_const(lexer, NUM_VAL, va_arg(arg_ptr, double))); \
break; \
case 's': /* string */ \
- expr = expr_from_const(lexer, new_const(lexer, STRING_TYPE, va_arg(arg_ptr, char *))); \
+ expr = expr_from_const(lexer, new_const(lexer, STRING_VAL, va_arg(arg_ptr, char *))); \
break; \
default: \
panic(lexer, "unknown format specifier in set_instrf()"); \
@@ -1227,7 +1232,7 @@
/*
=item C<static constant *
-create_const(lexer_state * const lexer, pir_type type, char * const name, va_list arg_ptr)>
+create_const(lexer_state * const lexer, value_type type, char * const name, va_list arg_ptr)>
Constant constructor; based on C<type>, retrieve a value of the
appropriate type from C<arg_ptr>.
@@ -1238,7 +1243,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static constant *
-create_const(lexer_state * const lexer, pir_type type, char const * const name, va_list arg_ptr) {
+create_const(lexer_state * const lexer, value_type type, char const * const name, va_list arg_ptr) {
constant *c = pir_mem_allocate_zeroed_typed(lexer, constant);
c->name = name;
c->type = type;
@@ -1246,19 +1251,21 @@
/* based on the indicated type, cast the variable argument to the right type. */
switch (type) {
- case INT_TYPE:
+ case INT_VAL:
c->val.ival = va_arg(arg_ptr, int);
break;
- case NUM_TYPE:
+ case NUM_VAL:
c->val.nval = va_arg(arg_ptr, double);
break;
- case PMC_TYPE:
- case STRING_TYPE:
+ case PMC_VAL:
+ case STRING_VAL:
c->val.sval = va_arg(arg_ptr, char *);
break;
- case UNKNOWN_TYPE:
+ case USTRING_VAL:
+ c->val.ustr = va_arg(arg_ptr, ucstring *);
+ break;
default:
- panic(lexer, "unknown data type in create_const()");
+ panic(lexer, "unknown data type in create_const() (%d)", type);
break;
}
@@ -1268,7 +1275,7 @@
/*
=item C<constant *
-new_named_const(lexer_state * const lexer, pir_type type, char * const name, ...)>
+new_named_const(lexer_state * const lexer, value_type type, char * const name, ...)>
Creates a new constant node of the given type, by the given name.
Wrapper function for C<create_const>.
@@ -1279,7 +1286,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
constant *
-new_named_const(lexer_state * const lexer, pir_type type, char const * const name, ...) {
+new_named_const(lexer_state * const lexer, value_type type, char const * const name, ...) {
constant *c;
va_list arg_ptr;
va_start(arg_ptr, name);
@@ -1312,7 +1319,7 @@
/*
=item C<constant *
-new_const(lexer_state * const lexer, pir_type type, ...)>
+new_const(lexer_state * const lexer, value_type type, ...)>
Creates a new constant node of the given type.
Wrapper function for C<create_const>
@@ -1323,7 +1330,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
constant *
-new_const(lexer_state * const lexer, pir_type type, ...) {
+new_const(lexer_state * const lexer, value_type type, ...) {
constant *c;
va_list arg_ptr;
va_start(arg_ptr, type);
@@ -1469,7 +1476,7 @@
PARROT_CANNOT_RETURN_NULL
expression *
expr_from_int(lexer_state * const lexer, int ival) {
- return expr_from_const(lexer, new_const(lexer, INT_TYPE, ival));
+ return expr_from_const(lexer, new_const(lexer, INT_VAL, ival));
}
/*
@@ -1487,7 +1494,7 @@
PARROT_CANNOT_RETURN_NULL
expression *
expr_from_num(lexer_state * const lexer, double nval) {
- return expr_from_const(lexer, new_const(lexer, NUM_TYPE, nval));
+ return expr_from_const(lexer, new_const(lexer, NUM_VAL, nval));
}
/*
@@ -1504,7 +1511,7 @@
PARROT_CANNOT_RETURN_NULL
expression *
expr_from_string(lexer_state * const lexer, char const * const sval) {
- return expr_from_const(lexer, new_const(lexer, STRING_TYPE, sval));
+ return expr_from_const(lexer, new_const(lexer, STRING_VAL, sval));
}
Modified: trunk/compilers/pirc/new/pircompunit.h
==============================================================================
--- trunk/compilers/pirc/new/pircompunit.h (original)
+++ trunk/compilers/pirc/new/pircompunit.h Sat Jan 3 03:55:47 2009
@@ -119,28 +119,45 @@
#define NOT(X) !(X)
-/* selector for the value union */
+/* selector for the value union. Use explicit values to distinguish them
+ * from the pir_type enumeration, this makes it easier to find bugs, where
+ * a pir_type value is used where a value_type should be used. These
+ * value_types continue where pir_type values end.
+ */
typedef enum value_types {
- INT_VAL,
- NUM_VAL,
- PMC_VAL,
- STR_VAL,
+ INT_VAL = 5,
+ STRING_VAL = 6,
+ PMC_VAL = 7,
+ NUM_VAL = 8,
+ USTRING_VAL = 9
} value_type;
+/* structure representing a "unicode" string;
+ * it holds the name of the encoding, the character set
+ * and the string itself.
+ */
+typedef struct ucstring {
+ char const *contents; /* the actual string */
+ char const *charset;
+ char const *encoding;
+} ucstring;
+
/* for representing constant values */
typedef union value {
- char *sval;
- double nval;
- int ival;
- char *pval;
+ char *sval;
+ double nval;
+ int ival;
+ char *pval;
+ ucstring *ustr;
} value;
+
/* literal constants, possibly named */
typedef struct constant {
char const *name; /* name of the constant, if declared as a constant */
- pir_type type; /* type of the constant */
+ value_type type; /* type of the constant; see enum value_types */
value val; /* value of the constant */
struct constant *next;
@@ -359,10 +376,10 @@
argument *set_arg_alias(struct lexer_state * const lexer, char const * const alias);
/* constructors for constant nodes */
-constant *new_named_const(struct lexer_state * const lexer, pir_type type,
+constant *new_named_const(struct lexer_state * const lexer, value_type type,
char const * const name, ...);
-constant *new_const(struct lexer_state * const lexer, pir_type type, ...);
+constant *new_const(struct lexer_state * const lexer, value_type type, ...);
constant *new_pmc_const(char const * const type, char const * const name, constant * const value);
Modified: trunk/compilers/pirc/new/piremit.c
==============================================================================
--- trunk/compilers/pirc/new/piremit.c (original)
+++ trunk/compilers/pirc/new/piremit.c Sat Jan 3 03:55:47 2009
@@ -142,19 +142,21 @@
void
print_constant(lexer_state * const lexer, constant * const c) {
switch (c->type) {
- case INT_TYPE:
+ case INT_VAL:
fprintf(out, "%d", c->val.ival);
break;
- case NUM_TYPE:
+ case NUM_VAL:
fprintf(out, "%f", c->val.nval);
break;
- case STRING_TYPE:
+ case STRING_VAL:
fprintf(out, "\"%s\"", c->val.sval);
break;
- case PMC_TYPE:
+ case PMC_VAL:
fprintf(out, "\"%s\"", c->val.pval);
break;
- case UNKNOWN_TYPE:
+ case USTRING_VAL:
+ fprintf(out, "\"%s\"", c->val.ustr->contents); /* XXX also encoding? */
+ break;
default:
panic(lexer, "Unknown type detected in print_constant()");
break;
@@ -463,21 +465,21 @@
static void
emit_pbc_const_arg(lexer_state * const lexer, constant * const c) {
switch (c->type) {
- case INT_TYPE:
+ case INT_VAL:
emit_int_arg(lexer->bc, c->val.ival);
break;
- case NUM_TYPE: {
+ case NUM_VAL: {
int index = add_num_const(lexer->bc, c->val.nval);
emit_int_arg(lexer->bc, index);
break;
}
- case STRING_TYPE: {
+ case STRING_VAL: {
int index = add_string_const(lexer->bc, c->val.sval);
fprintf(stderr, "index of string const: %d\n", index);
emit_int_arg(lexer->bc, index);
break;
}
- case PMC_TYPE: {
+ case PMC_VAL: {
/*
int index = add_pmc_const(lexer->bc, c->val.pval);
@@ -490,6 +492,9 @@
fprintf(stderr, "emit_pbc_const_arg: pmc type\n");
break;
}
+ case USTRING_VAL:
+ /* XXX */
+ break;
default:
break;
}
@@ -558,11 +563,11 @@
case EXPR_CONSTANT: {
constant *c = iter->expr->expr.c;
switch (c->type) {
- case INT_TYPE:
+ case INT_VAL:
*pc++ = PARROT_ARG_IC;
*pc++ = c->val.ival;
break;
- case STRING_TYPE:
+ case STRING_VAL:
*pc++ = PARROT_ARG_SC;
*pc++ = add_string_const(lexer->bc, c->val.sval);
break;
@@ -735,7 +740,7 @@
/* replace 2nd operand with the new one. */
second_operand->expr.c->val.ival = index;
- second_operand->expr.c->type = INT_TYPE;
+ second_operand->expr.c->type = INT_VAL;
break;
}
@@ -757,7 +762,7 @@
/* replace 2nd operand with the new one. */
second_operand->expr.c->val.ival = index;
- second_operand->expr.c->type = INT_TYPE;
+ second_operand->expr.c->type = INT_VAL;
break;
}
Modified: trunk/compilers/pirc/new/pirlexer.c
==============================================================================
--- trunk/compilers/pirc/new/pirlexer.c (original)
+++ trunk/compilers/pirc/new/pirlexer.c Sat Jan 3 03:55:47 2009
@@ -1378,17 +1378,17 @@
362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
372, 374, 375, 376, 377, 378, 379, 380, 383, 388,
- 392, 393, 394, 395, 397, 402, 414, 429, 430, 431,
- 432, 433, 435, 487, 500, 522, 527, 532, 539, 540,
- 555, 560, 561, 566, 567, 568, 570, 586, 640, 668,
- 673, 678, 679, 680, 681, 686, 697, 698, 700, 702,
- 713, 727, 732, 733, 734, 735, 737, 752, 766, 795,
- 820, 822, 827, 837, 842, 860, 866, 873, 906, 908,
- 913, 949, 950, 951, 953, 954, 955, 956, 957, 958,
- 960, 961, 962, 964, 969, 974, 975, 978, 1012, 1017,
- 1020, 1021, 1022, 1023, 1025, 1030, 1031, 1032, 1033, 1034,
+ 412, 413, 414, 415, 417, 422, 434, 449, 450, 451,
+ 452, 453, 455, 507, 520, 542, 547, 552, 559, 560,
+ 575, 580, 581, 586, 587, 588, 590, 606, 660, 688,
+ 693, 698, 699, 700, 701, 706, 717, 718, 720, 722,
+ 733, 747, 752, 753, 754, 755, 757, 772, 786, 815,
+ 840, 842, 847, 857, 862, 880, 886, 893, 926, 928,
+ 933, 969, 970, 971, 973, 974, 975, 976, 977, 978,
+ 980, 981, 982, 984, 989, 994, 995, 998, 1032, 1037,
+ 1040, 1041, 1042, 1043, 1045, 1050, 1051, 1052, 1053, 1054,
- 1036, 1041, 1043, 1045
+ 1056, 1061, 1063, 1065
} ;
/* The intent behind this definition is that it'll catch
@@ -2523,34 +2523,54 @@
case 110:
YY_RULE_SETUP
#line 388 "pir.l"
-{ /* copy the string completely*/
- yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
+{ /* parse yytext, which contains the encoding, a ':', and the quoted string */
+ char *colon = strchr(yytext, ':');
+ lexer_state *lexer = yypirget_extra(yyscanner);
+ ucstring *ustr = (ucstring *)pir_mem_allocate(lexer, sizeof (ucstring));
+ /* copy the encoding part */
+ ustr->encoding = dupstrn(lexer, yytext, colon - yytext);
+ /* the colon becomes a NULL character to end the encoding string */
+ *colon = '\0';
+ /* copy the string contents, strip the quotes. Example:
+ * iso-8859-1:"hi there"
+ * 123456789012345678901
+ *
+ * colon points to the colon, add 2 to point to the first character
+ * in the string ('h'). yyleng is 20 in the example, subtract
+ * string length of the encoding part (10) and 3 for the quotes and colon.
+ */
+
+ ustr->contents = dupstrn(lexer, colon + 2, yyleng - strlen(ustr->encoding) - 3);
+
+ fprintf(stderr, "ucstring: [%s]:[%s]\n", ustr->encoding, ustr->contents);
+
+ yylval->ustr = ustr;
return TK_USTRINGC;
}
YY_BREAK
case 111:
YY_RULE_SETUP
-#line 392 "pir.l"
+#line 412 "pir.l"
{ yylval->ival = atoi(yytext + 2); return TK_PREG; }
YY_BREAK
case 112:
YY_RULE_SETUP
-#line 393 "pir.l"
+#line 413 "pir.l"
{ yylval->ival = atoi(yytext + 2); return TK_SREG; }
YY_BREAK
case 113:
YY_RULE_SETUP
-#line 394 "pir.l"
+#line 414 "pir.l"
{ yylval->ival = atoi(yytext + 2); return TK_NREG; }
YY_BREAK
case 114:
YY_RULE_SETUP
-#line 395 "pir.l"
+#line 415 "pir.l"
{ yylval->ival = atoi(yytext + 2); return TK_IREG; }
YY_BREAK
case 115:
YY_RULE_SETUP
-#line 397 "pir.l"
+#line 417 "pir.l"
{ /* make the label Id available in the parser. remove the ":" first. */
yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext, yyleng - 1);
return TK_LABEL;
@@ -2558,7 +2578,7 @@
YY_BREAK
case 116:
YY_RULE_SETUP
-#line 402 "pir.l"
+#line 422 "pir.l"
{ /* give a warning when using PASM registers as PIR identifiers */
lexer_state * const lexer = yypirget_extra(yyscanner);
@@ -2573,7 +2593,7 @@
YY_BREAK
case 117:
YY_RULE_SETUP
-#line 414 "pir.l"
+#line 434 "pir.l"
{ /* identifier; can be a global (sub or const), local or parrot op */
lexer_state * const lexer = yypirget_extra(yyscanner);
constant *c = find_global_constant(lexer, yytext);
@@ -2591,32 +2611,32 @@
YY_BREAK
case 118:
YY_RULE_SETUP
-#line 429 "pir.l"
+#line 449 "pir.l"
{ yylval->dval = atof(yytext); return TK_NUMC; }
YY_BREAK
case 119:
YY_RULE_SETUP
-#line 430 "pir.l"
+#line 450 "pir.l"
{ yylval->ival = atoi(yytext); return TK_INTC; }
YY_BREAK
case 120:
YY_RULE_SETUP
-#line 431 "pir.l"
+#line 451 "pir.l"
{ yylval->ival = atoi(yytext); return TK_INTC; }
YY_BREAK
case 121:
YY_RULE_SETUP
-#line 432 "pir.l"
+#line 452 "pir.l"
{ yylval->ival = atoi(yytext); return TK_INTC; }
YY_BREAK
case 122:
YY_RULE_SETUP
-#line 433 "pir.l"
+#line 453 "pir.l"
{ yylval->ival = atoi(yytext); return TK_INTC; }
YY_BREAK
case 123:
YY_RULE_SETUP
-#line 435 "pir.l"
+#line 455 "pir.l"
{ /* XXX some work to be done to disallow $P0 . foo()
* spaces should not be allowed.
*/
@@ -2639,7 +2659,7 @@
case YY_STATE_EOF(SCANSTR):
-#line 458 "pir.l"
+#line 478 "pir.l"
{ /* switch back from .macro_const buffer to file. */
lexer_state * const lexer = yypirget_extra(yyscanner);
yy_pop_state(yyscanner);
@@ -2647,7 +2667,7 @@
}
YY_BREAK
case YY_STATE_EOF(SCANMACRO):
-#line 464 "pir.l"
+#line 484 "pir.l"
{ /* override the default <<EOF>> action; go back to normal state and
* switch back to the saved file.
*/
@@ -2673,7 +2693,7 @@
YY_BREAK
case 124:
YY_RULE_SETUP
-#line 487 "pir.l"
+#line 507 "pir.l"
{ /* when scanning a macro body, the @ marker indicates the {IDENT} must
* be munged.
*/
@@ -2684,14 +2704,14 @@
}
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 496 "pir.l"
+#line 516 "pir.l"
{ /* end of file, stop scanning. */
yyterminate();
}
YY_BREAK
case 125:
YY_RULE_SETUP
-#line 500 "pir.l"
+#line 520 "pir.l"
{ /* any character not covered in the rules above is an error. */
yypirerror(yyscanner, yypirget_extra(yyscanner),
"unexpected character: '%c'", yytext[0]);
@@ -2712,7 +2732,7 @@
case 126:
YY_RULE_SETUP
-#line 522 "pir.l"
+#line 542 "pir.l"
{
yy_push_state(MACROCONST, yyscanner);
return TK_MACRO_CONST;
@@ -2720,7 +2740,7 @@
YY_BREAK
case 127:
YY_RULE_SETUP
-#line 527 "pir.l"
+#line 547 "pir.l"
{
yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
return TK_IDENT;
@@ -2728,7 +2748,7 @@
YY_BREAK
case 128:
YY_RULE_SETUP
-#line 532 "pir.l"
+#line 552 "pir.l"
{
/* only these tokens can be macro constant values */
yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
@@ -2738,19 +2758,19 @@
YY_BREAK
case 129:
YY_RULE_SETUP
-#line 539 "pir.l"
+#line 559 "pir.l"
{ /* ignore whitespace */ }
YY_BREAK
case 130:
YY_RULE_SETUP
-#line 540 "pir.l"
+#line 560 "pir.l"
{
yypirerror(yyscanner, yypirget_extra(yyscanner),
"unknown character: '%c'", yytext[0]);
}
YY_BREAK
case YY_STATE_EOF(MACROCONST):
-#line 544 "pir.l"
+#line 564 "pir.l"
{
yypirerror(yyscanner, yypirget_extra(yyscanner),
"read end of file during .macro_const definition");
@@ -2763,7 +2783,7 @@
case 131:
YY_RULE_SETUP
-#line 555 "pir.l"
+#line 575 "pir.l"
{ /* start a macro definition */
yy_push_state(MACROHEAD, yyscanner);
return TK_MACRO;
@@ -2771,12 +2791,12 @@
YY_BREAK
case 132:
YY_RULE_SETUP
-#line 560 "pir.l"
+#line 580 "pir.l"
{ /* ignore whitespace */ }
YY_BREAK
case 133:
YY_RULE_SETUP
-#line 561 "pir.l"
+#line 581 "pir.l"
{
yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
return TK_IDENT;
@@ -2784,23 +2804,23 @@
YY_BREAK
case 134:
YY_RULE_SETUP
-#line 566 "pir.l"
+#line 586 "pir.l"
{ return '('; }
YY_BREAK
case 135:
YY_RULE_SETUP
-#line 567 "pir.l"
+#line 587 "pir.l"
{ return ')'; }
YY_BREAK
case 136:
YY_RULE_SETUP
-#line 568 "pir.l"
+#line 588 "pir.l"
{ return ','; }
YY_BREAK
case 137:
/* rule 137 can match eol */
YY_RULE_SETUP
-#line 570 "pir.l"
+#line 590 "pir.l"
{ /* a set of continuous newlines yields a single newline token. */
yy_pop_state(yyscanner); /* remove MACROHEAD state */
yy_push_state(MACROBODY, yyscanner); /* enter MACROBODY state */
@@ -2818,7 +2838,7 @@
case 138:
YY_RULE_SETUP
-#line 586 "pir.l"
+#line 606 "pir.l"
{ /* .foo; it can be a macro, macro_local, or just $P0.foo(),
* but we need to check that.
*/
@@ -2875,7 +2895,7 @@
YY_BREAK
case 139:
YY_RULE_SETUP
-#line 640 "pir.l"
+#line 660 "pir.l"
{ /* expand a .macro_const or parameter in argument list */
lexer_state * const lexer = yypirget_extra(yyscanner);
macro_def * const macro = find_macro(lexer->macros, yytext + 1);
@@ -2906,7 +2926,7 @@
YY_BREAK
case 140:
YY_RULE_SETUP
-#line 668 "pir.l"
+#line 688 "pir.l"
{
yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
return TK_MACRO_ARG_IDENT;
@@ -2914,7 +2934,7 @@
YY_BREAK
case 141:
YY_RULE_SETUP
-#line 673 "pir.l"
+#line 693 "pir.l"
{
yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
return TK_MACRO_ARG_OTHER;
@@ -2922,22 +2942,22 @@
YY_BREAK
case 142:
YY_RULE_SETUP
-#line 678 "pir.l"
+#line 698 "pir.l"
{ /* ignore whitespace */ }
YY_BREAK
case 143:
YY_RULE_SETUP
-#line 679 "pir.l"
+#line 699 "pir.l"
{ return ','; }
YY_BREAK
case 144:
YY_RULE_SETUP
-#line 680 "pir.l"
+#line 700 "pir.l"
{ return '('; }
YY_BREAK
case 145:
YY_RULE_SETUP
-#line 681 "pir.l"
+#line 701 "pir.l"
{
yy_pop_state(yyscanner); /* leave MACROEXPAND state */
return ')';
@@ -2945,14 +2965,14 @@
YY_BREAK
case 146:
YY_RULE_SETUP
-#line 686 "pir.l"
+#line 706 "pir.l"
{
yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
return TK_MACRO_ARG_OTHER;
}
YY_BREAK
case YY_STATE_EOF(STRINGEXPAND):
-#line 691 "pir.l"
+#line 711 "pir.l"
{
lexer_state * const lexer = yypirget_extra(yyscanner);
yy_pop_state(yyscanner);
@@ -2961,23 +2981,23 @@
YY_BREAK
case 147:
YY_RULE_SETUP
-#line 697 "pir.l"
+#line 717 "pir.l"
{ return '{'; }
YY_BREAK
case 148:
YY_RULE_SETUP
-#line 698 "pir.l"
+#line 718 "pir.l"
{ return '}'; }
YY_BREAK
case 149:
/* rule 149 can match eol */
YY_RULE_SETUP
-#line 700 "pir.l"
+#line 720 "pir.l"
{ yylval->sval = "\n"; return TK_NL; }
YY_BREAK
case 150:
YY_RULE_SETUP
-#line 702 "pir.l"
+#line 722 "pir.l"
{ yypirerror(yyscanner, yypirget_extra(yyscanner),
"unknown character in macro expansion: %c", yytext[0]);
}
@@ -2989,7 +3009,7 @@
case 151:
YY_RULE_SETUP
-#line 713 "pir.l"
+#line 733 "pir.l"
{ /* give a warning if the right flag is set */
/*
lexer_state * const lexer = yypirget_extra(yyscanner);
@@ -3005,7 +3025,7 @@
YY_BREAK
case 152:
YY_RULE_SETUP
-#line 727 "pir.l"
+#line 747 "pir.l"
{
yy_push_state(MACROLOCAL, yyscanner);
return TK_MACRO_LOCAL;
@@ -3013,27 +3033,27 @@
YY_BREAK
case 153:
YY_RULE_SETUP
-#line 732 "pir.l"
+#line 752 "pir.l"
{ return TK_INT; }
YY_BREAK
case 154:
YY_RULE_SETUP
-#line 733 "pir.l"
+#line 753 "pir.l"
{ return TK_PMC; }
YY_BREAK
case 155:
YY_RULE_SETUP
-#line 734 "pir.l"
+#line 754 "pir.l"
{ return TK_NUM; }
YY_BREAK
case 156:
YY_RULE_SETUP
-#line 735 "pir.l"
+#line 755 "pir.l"
{ return TK_STRING; }
YY_BREAK
case 157:
YY_RULE_SETUP
-#line 737 "pir.l"
+#line 757 "pir.l"
{ /* normal .macro_local */
lexer_state * const lexer = yypirget_extra(yyscanner);
/* reserve space for {IDENT}, the @ marker and the NULL char. */
@@ -3051,7 +3071,7 @@
YY_BREAK
case 158:
YY_RULE_SETUP
-#line 752 "pir.l"
+#line 772 "pir.l"
{ /* declare a .macro_local based on a parameter */
lexer_state * const lexer = yypirget_extra(yyscanner);
@@ -3068,7 +3088,7 @@
YY_BREAK
case 159:
YY_RULE_SETUP
-#line 766 "pir.l"
+#line 786 "pir.l"
{ /* .$foo */
lexer_state * const lexer = yypirget_extra(yyscanner);
macro_table * const table = peek_macro_table(lexer);
@@ -3100,7 +3120,7 @@
YY_BREAK
case 160:
YY_RULE_SETUP
-#line 795 "pir.l"
+#line 815 "pir.l"
{ /* expanding a .macro_local using a macro parameter value */
lexer_state * const lexer = yypirget_extra(yyscanner);
char const * const paramname = dupstrn(lexer, yytext + 1, yyleng - 2);
@@ -3128,13 +3148,13 @@
YY_BREAK
case 161:
YY_RULE_SETUP
-#line 820 "pir.l"
+#line 840 "pir.l"
{ /* ignore whitespace */ }
YY_BREAK
case 162:
/* rule 162 can match eol */
YY_RULE_SETUP
-#line 822 "pir.l"
+#line 842 "pir.l"
{ /* newline after .macro_local <type> <ident> line */
yy_pop_state(yyscanner);
return TK_NL;
@@ -3142,7 +3162,7 @@
YY_BREAK
case 163:
YY_RULE_SETUP
-#line 827 "pir.l"
+#line 847 "pir.l"
{ /* this state is only used for declaring .macro_locals */
yypirerror(yyscanner, yypirget_extra(yyscanner),
"unknown character '%c' when declaring .macro_local", yytext[0]);
@@ -3155,7 +3175,7 @@
case 164:
YY_RULE_SETUP
-#line 837 "pir.l"
+#line 857 "pir.l"
{
yy_push_state(MACROLABEL, yyscanner);
return TK_MACRO_LABEL;
@@ -3163,7 +3183,7 @@
YY_BREAK
case 165:
YY_RULE_SETUP
-#line 842 "pir.l"
+#line 862 "pir.l"
{ /* if the "$" is there, it's a macro label using a macro
* parameter's value; otherwise it's a normal macro label
*/
@@ -3184,7 +3204,7 @@
case 166:
/* rule 166 can match eol */
YY_RULE_SETUP
-#line 860 "pir.l"
+#line 880 "pir.l"
{ /* the newline character after a ".macro_label $foo:" declaration */
yy_pop_state(yyscanner); /* leave MACROLABEL state */
return TK_NL;
@@ -3192,7 +3212,7 @@
YY_BREAK
case 167:
YY_RULE_SETUP
-#line 866 "pir.l"
+#line 886 "pir.l"
{ /* scan a label when expanding a buffer; declared as .macro_label */
lexer_state * const lexer = yypirget_extra(yyscanner);
char const * const label = dupstrn(lexer, yytext, yyleng - 2);
@@ -3202,7 +3222,7 @@
YY_BREAK
case 168:
YY_RULE_SETUP
-#line 873 "pir.l"
+#line 893 "pir.l"
{ /* scan a label when expanding macro; was a macro parameter */
lexer_state * const lexer = yypirget_extra(yyscanner);
char const * const paramname = dupstrn(lexer, yytext + 1, yyleng - 3);
@@ -3237,12 +3257,12 @@
case 169:
/* rule 169 can match eol */
YY_RULE_SETUP
-#line 906 "pir.l"
+#line 926 "pir.l"
{ store_macro_char(CURRENT_MACRO(yypirget_extra(yyscanner)), '\n'); }
YY_BREAK
case 170:
YY_RULE_SETUP
-#line 908 "pir.l"
+#line 928 "pir.l"
{
yy_pop_state(yyscanner); /* leave MACROBODY state */
return TK_ENDM;
@@ -3250,13 +3270,13 @@
YY_BREAK
case 171:
YY_RULE_SETUP
-#line 913 "pir.l"
+#line 933 "pir.l"
{ /* store everything else */
store_macro_char(CURRENT_MACRO(yypirget_extra(yyscanner)), yytext[0]);
}
YY_BREAK
case YY_STATE_EOF(MACROBODY):
-#line 917 "pir.l"
+#line 937 "pir.l"
{ /* catch run-away macro bodys */
yypirerror(yyscanner, yypirget_extra(yyscanner),
"read end of file while reading macro body");
@@ -3288,67 +3308,67 @@
case 172:
YY_RULE_SETUP
-#line 949 "pir.l"
+#line 969 "pir.l"
{ return ','; }
YY_BREAK
case 173:
YY_RULE_SETUP
-#line 950 "pir.l"
+#line 970 "pir.l"
{ return '['; }
YY_BREAK
case 174:
YY_RULE_SETUP
-#line 951 "pir.l"
+#line 971 "pir.l"
{ return ']'; }
YY_BREAK
case 175:
YY_RULE_SETUP
-#line 953 "pir.l"
+#line 973 "pir.l"
{ return TK_FLAG_MAIN; }
YY_BREAK
case 176:
YY_RULE_SETUP
-#line 954 "pir.l"
+#line 974 "pir.l"
{ return TK_FLAG_LOAD; }
YY_BREAK
case 177:
YY_RULE_SETUP
-#line 955 "pir.l"
+#line 975 "pir.l"
{ return TK_FLAG_INIT; }
YY_BREAK
case 178:
YY_RULE_SETUP
-#line 956 "pir.l"
+#line 976 "pir.l"
{ return TK_FLAG_ANON; }
YY_BREAK
case 179:
YY_RULE_SETUP
-#line 957 "pir.l"
+#line 977 "pir.l"
{ return TK_FLAG_POSTCOMP; }
YY_BREAK
case 180:
YY_RULE_SETUP
-#line 958 "pir.l"
+#line 978 "pir.l"
{ return TK_FLAG_IMMEDIATE; }
YY_BREAK
case 181:
YY_RULE_SETUP
-#line 960 "pir.l"
+#line 980 "pir.l"
{ return TK_PCC_SUB; }
YY_BREAK
case 182:
YY_RULE_SETUP
-#line 961 "pir.l"
+#line 981 "pir.l"
{ return TK_LEX; }
YY_BREAK
case 183:
YY_RULE_SETUP
-#line 962 "pir.l"
+#line 982 "pir.l"
{ return TK_NAMESPACE; }
YY_BREAK
case 184:
YY_RULE_SETUP
-#line 964 "pir.l"
+#line 984 "pir.l"
{
yy_push_state(MACROHEAD, yyscanner);
return TK_MACRO;
@@ -3356,7 +3376,7 @@
YY_BREAK
case 185:
YY_RULE_SETUP
-#line 969 "pir.l"
+#line 989 "pir.l"
{
yy_push_state(MACROCONST, yyscanner);
return TK_MACRO_CONST;
@@ -3364,17 +3384,17 @@
YY_BREAK
case 186:
YY_RULE_SETUP
-#line 974 "pir.l"
+#line 994 "pir.l"
{ return TK_LINE; }
YY_BREAK
case 187:
YY_RULE_SETUP
-#line 975 "pir.l"
+#line 995 "pir.l"
{ return TK_FILE; }
YY_BREAK
case 188:
YY_RULE_SETUP
-#line 978 "pir.l"
+#line 998 "pir.l"
{ /* macro expansion in PASM mode. */
lexer_state * const lexer = yypirget_extra(yyscanner);
macro_def * const macro = find_macro(lexer->macros, yytext + 1);
@@ -3411,7 +3431,7 @@
YY_BREAK
case 189:
YY_RULE_SETUP
-#line 1012 "pir.l"
+#line 1032 "pir.l"
{ /* a label in PASM */
yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext, yyleng - 1);
return TK_LABEL;
@@ -3419,34 +3439,34 @@
YY_BREAK
case 190:
YY_RULE_SETUP
-#line 1017 "pir.l"
+#line 1037 "pir.l"
{ yypirerror(yyscanner, yypirget_extra(yyscanner),
"symbolic registers are not allowed in PASM mode");
}
YY_BREAK
case 191:
YY_RULE_SETUP
-#line 1020 "pir.l"
+#line 1040 "pir.l"
{ yylval->ival = atoi(yytext + 1); return TK_PREG; }
YY_BREAK
case 192:
YY_RULE_SETUP
-#line 1021 "pir.l"
+#line 1041 "pir.l"
{ yylval->ival = atoi(yytext + 1); return TK_NREG; }
YY_BREAK
case 193:
YY_RULE_SETUP
-#line 1022 "pir.l"
+#line 1042 "pir.l"
{ yylval->ival = atoi(yytext + 1); return TK_IREG; }
YY_BREAK
case 194:
YY_RULE_SETUP
-#line 1023 "pir.l"
+#line 1043 "pir.l"
{ yylval->ival = atoi(yytext + 1); return TK_SREG; }
YY_BREAK
case 195:
YY_RULE_SETUP
-#line 1025 "pir.l"
+#line 1045 "pir.l"
{ /* can be a parrot op or a label; the check is done in the parser. */
yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
return TK_IDENT;
@@ -3454,32 +3474,32 @@
YY_BREAK
case 196:
YY_RULE_SETUP
-#line 1030 "pir.l"
+#line 1050 "pir.l"
{ yylval->dval = atof(yytext); return TK_NUMC; }
YY_BREAK
case 197:
YY_RULE_SETUP
-#line 1031 "pir.l"
+#line 1051 "pir.l"
{ yylval->ival = atoi(yytext); return TK_INTC; }
YY_BREAK
case 198:
YY_RULE_SETUP
-#line 1032 "pir.l"
+#line 1052 "pir.l"
{ yylval->ival = atoi(yytext); return TK_INTC; }
YY_BREAK
case 199:
YY_RULE_SETUP
-#line 1033 "pir.l"
+#line 1053 "pir.l"
{ yylval->ival = atoi(yytext); return TK_INTC; }
YY_BREAK
case 200:
YY_RULE_SETUP
-#line 1034 "pir.l"
+#line 1054 "pir.l"
{ yylval->ival = atoi(yytext); return TK_INTC; }
YY_BREAK
case 201:
YY_RULE_SETUP
-#line 1036 "pir.l"
+#line 1056 "pir.l"
{ /* copy the string, remove the quotes. */
yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext + 1, yyleng - 2);
return TK_STRINGC;
@@ -3487,32 +3507,32 @@
YY_BREAK
case 202:
YY_RULE_SETUP
-#line 1041 "pir.l"
+#line 1061 "pir.l"
{ /* ignore whitespace */ }
YY_BREAK
case 203:
/* rule 203 can match eol */
YY_RULE_SETUP
-#line 1043 "pir.l"
+#line 1063 "pir.l"
{ return TK_NL; }
YY_BREAK
case 204:
YY_RULE_SETUP
-#line 1045 "pir.l"
+#line 1065 "pir.l"
{ yypirerror(yyscanner, yypirget_extra(yyscanner),
"unrecognized character: %c", yytext[0]);
}
YY_BREAK
case YY_STATE_EOF(PASM):
-#line 1048 "pir.l"
+#line 1068 "pir.l"
{ yyterminate(); }
YY_BREAK
case 205:
YY_RULE_SETUP
-#line 1050 "pir.l"
+#line 1070 "pir.l"
ECHO;
YY_BREAK
-#line 3516 "pirlexer.c"
+#line 3536 "pirlexer.c"
case YY_STATE_EOF(MACROHEAD):
case YY_STATE_EOF(MACROLOCAL):
case YY_STATE_EOF(MACROLABEL):
@@ -4766,7 +4786,7 @@
/* %ok-for-header */
-#line 1050 "pir.l"
+#line 1070 "pir.l"
Modified: trunk/compilers/pirc/new/pirlexer.h
==============================================================================
--- trunk/compilers/pirc/new/pirlexer.h (original)
+++ trunk/compilers/pirc/new/pirlexer.h Sat Jan 3 03:55:47 2009
@@ -492,7 +492,7 @@
#undef YY_DECL
#endif
-#line 1050 "pir.l"
+#line 1070 "pir.l"
#line 499 "pirlexer.h"
Modified: trunk/compilers/pirc/new/pirparser.c
==============================================================================
--- trunk/compilers/pirc/new/pirparser.c (original)
+++ trunk/compilers/pirc/new/pirparser.c Sat Jan 3 03:55:47 2009
@@ -576,6 +576,7 @@
unsigned uval;
char const *sval;
struct constant *cval;
+ struct ucstring *ustr;
struct instruction *instr;
struct expression *expr;
struct target *targ;
@@ -587,7 +588,7 @@
struct macro_param *pval;
}
/* Line 187 of yacc.c. */
-#line 591 "pirparser.c"
+#line 592 "pirparser.c"
YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
@@ -600,7 +601,7 @@
/* Line 216 of yacc.c. */
-#line 604 "pirparser.c"
+#line 605 "pirparser.c"
#ifdef short
# undef short
@@ -815,16 +816,16 @@
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 10
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 1053
+#define YYLAST 1073
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 140
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 166
+#define YYNNTS 167
/* YYNRULES -- Number of rules. */
-#define YYNRULES 422
+#define YYNRULES 425
/* YYNRULES -- Number of states. */
-#define YYNSTATES 659
+#define YYNSTATES 662
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
@@ -921,36 +922,36 @@
1093, 1095, 1097, 1099, 1101, 1103, 1105, 1107, 1109, 1111,
1113, 1115, 1117, 1119, 1121, 1123, 1125, 1127, 1129, 1131,
1133, 1135, 1137, 1139, 1141, 1143, 1145, 1147, 1149, 1151,
- 1153, 1155, 1157, 1159, 1161, 1163, 1166, 1168, 1170, 1173,
- 1175, 1178, 1180, 1183, 1186, 1188, 1191, 1194, 1196, 1198,
- 1200, 1204, 1206
+ 1153, 1155, 1157, 1159, 1161, 1163, 1165, 1167, 1169, 1172,
+ 1174, 1176, 1179, 1181, 1184, 1186, 1189, 1192, 1194, 1197,
+ 1200, 1202, 1204, 1206, 1210, 1212
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int16 yyrhs[] =
{
- 141, 0, -1, 117, 142, -1, 116, 297, -1, 143,
+ 141, 0, -1, 117, 142, -1, 116, 298, -1, 143,
144, 143, -1, -1, 35, -1, 145, -1, 144, 35,
145, -1, 168, -1, 282, -1, 164, -1, 162, -1,
163, -1, 159, -1, 160, -1, 161, -1, 146, -1,
147, -1, 148, -1, 109, 37, 115, -1, 149, 120,
- 150, 121, 35, 153, 106, -1, 105, 292, -1, -1,
- 151, -1, 152, -1, 151, 122, 152, -1, 292, -1,
+ 150, 121, 35, 153, 106, -1, 105, 293, -1, -1,
+ 151, -1, 152, -1, 151, 122, 152, -1, 293, -1,
-1, 154, -1, 155, -1, 154, 155, -1, 156, 35,
- -1, 157, -1, 158, -1, 108, 110, -1, 107, 288,
+ -1, 157, -1, 158, -1, 108, 110, -1, 107, 289,
111, -1, 5, 46, -1, 10, 48, -1, 11, 46,
-1, 34, 46, 122, 46, -1, 3, 46, -1, 4,
46, 123, 46, -1, 13, 124, 165, 125, -1, -1,
166, -1, 167, -1, 166, 126, 167, -1, 46, -1,
170, 172, 35, 178, 186, 169, -1, 7, -1, 6,
- 171, -1, 292, -1, 46, -1, -1, 172, 173, -1,
+ 171, -1, 293, -1, 46, -1, -1, 172, 173, -1,
87, -1, 84, -1, 85, -1, 86, -1, 91, -1,
93, -1, 94, -1, 92, 174, -1, 89, 120, 171,
121, -1, 88, 278, -1, 90, 278, -1, 95, 279,
-1, 96, 279, -1, 97, 279, -1, 120, 175, 121,
-1, -1, 176, -1, 177, -1, 176, 122, 177, -1,
- 292, -1, 46, -1, 213, -1, 179, -1, -1, 179,
- 180, -1, 8, 181, 182, 35, -1, 288, 292, -1,
+ 293, -1, 46, -1, 213, -1, 179, -1, -1, 179,
+ 180, -1, 8, 181, 182, 35, -1, 289, 293, -1,
-1, 182, 183, -1, 256, -1, 184, -1, 185, -1,
104, 120, 177, 121, -1, 98, -1, -1, 186, 187,
-1, 36, 188, -1, 188, -1, 203, -1, 220, -1,
@@ -962,48 +963,48 @@
112, 191, -1, 195, -1, 127, 196, 128, -1, -1,
196, 197, -1, 35, -1, 114, -1, 113, -1, 112,
191, -1, 35, -1, 160, 35, -1, 1, 35, -1,
- 44, 289, 35, -1, 28, 251, 35, -1, 204, 35,
+ 44, 290, 35, -1, 28, 251, 35, -1, 204, 35,
-1, 205, 206, -1, 215, -1, 37, -1, 207, -1,
209, -1, -1, 208, -1, 210, -1, 208, 122, 210,
-1, 213, 123, 285, -1, 211, -1, 213, -1, 286,
- -1, 292, -1, 291, -1, 212, -1, 250, 213, -1,
+ -1, 293, -1, 292, -1, 212, -1, 250, 213, -1,
124, 214, 125, -1, 285, -1, 214, 126, 285, -1,
- 289, 123, 205, 211, 122, 208, -1, 289, 123, 205,
- 211, -1, 289, 123, 205, 213, 122, 208, -1, 218,
- 35, -1, 37, -1, 293, -1, 289, 123, 48, -1,
- 289, 123, 49, -1, 289, 123, 46, -1, 289, 123,
- 291, -1, 289, 123, 217, -1, 289, 123, 219, -1,
- 289, 123, 205, 213, -1, 289, 123, 293, 213, -1,
- 289, 123, 50, 213, -1, 289, 296, 285, -1, 289,
- 73, 48, -1, 289, 73, 49, -1, 289, 74, 48,
- -1, 289, 74, 49, -1, 289, 73, 289, -1, 289,
- 74, 289, -1, 289, 123, 294, 285, -1, 289, 123,
- 289, 295, 285, -1, 293, 213, 123, 285, -1, 50,
- 213, 123, 285, -1, 48, 295, 289, -1, 49, 295,
- 289, -1, 46, 295, 289, -1, 46, 295, 46, -1,
- 48, 295, 48, -1, 49, 295, 49, -1, 48, 295,
- 49, -1, 49, 295, 48, -1, 221, 35, -1, 224,
- 44, 37, 45, 292, -1, 224, 44, 38, 45, 292,
- -1, 224, 44, 39, 45, 292, -1, 224, 44, 40,
- 45, 292, -1, 224, 44, 41, 45, 292, -1, 224,
- 44, 42, 45, 292, -1, 224, 44, 43, 45, 292,
- -1, 224, 44, 45, 45, 292, -1, 224, 44, 44,
- 45, 292, -1, 224, 286, 225, 292, -1, 224, 44,
- 50, 225, 292, -1, 224, 37, 225, 292, -1, 224,
- 291, 225, 292, -1, 224, 38, 225, 292, -1, 224,
- 39, 225, 292, -1, 224, 40, 225, 292, -1, 224,
- 41, 225, 292, -1, 224, 42, 225, 292, -1, 224,
- 43, 225, 292, -1, 224, 45, 45, 292, -1, 224,
- 45, 122, 292, -1, 224, 44, 45, 292, -1, 224,
- 44, 122, 292, -1, 224, 222, 45, 292, -1, 289,
- 287, 285, -1, 48, 287, 289, -1, 49, 287, 289,
- -1, 46, 287, 289, -1, 48, 287, 48, -1, 48,
- 287, 49, -1, 49, 287, 48, -1, 49, 287, 49,
- -1, 46, 287, 46, -1, 46, 287, 223, -1, 48,
- 287, 46, -1, 49, 287, 46, -1, 48, -1, 49,
+ 290, 123, 205, 211, 122, 208, -1, 290, 123, 205,
+ 211, -1, 290, 123, 205, 213, 122, 208, -1, 218,
+ 35, -1, 37, -1, 294, -1, 290, 123, 48, -1,
+ 290, 123, 49, -1, 290, 123, 287, -1, 290, 123,
+ 292, -1, 290, 123, 217, -1, 290, 123, 219, -1,
+ 290, 123, 205, 213, -1, 290, 123, 294, 213, -1,
+ 290, 123, 50, 213, -1, 290, 297, 285, -1, 290,
+ 73, 48, -1, 290, 73, 49, -1, 290, 74, 48,
+ -1, 290, 74, 49, -1, 290, 73, 290, -1, 290,
+ 74, 290, -1, 290, 123, 295, 285, -1, 290, 123,
+ 290, 296, 285, -1, 294, 213, 123, 285, -1, 50,
+ 213, 123, 285, -1, 48, 296, 290, -1, 49, 296,
+ 290, -1, 46, 296, 290, -1, 46, 296, 46, -1,
+ 48, 296, 48, -1, 49, 296, 49, -1, 48, 296,
+ 49, -1, 49, 296, 48, -1, 221, 35, -1, 224,
+ 44, 37, 45, 293, -1, 224, 44, 38, 45, 293,
+ -1, 224, 44, 39, 45, 293, -1, 224, 44, 40,
+ 45, 293, -1, 224, 44, 41, 45, 293, -1, 224,
+ 44, 42, 45, 293, -1, 224, 44, 43, 45, 293,
+ -1, 224, 44, 45, 45, 293, -1, 224, 44, 44,
+ 45, 293, -1, 224, 286, 225, 293, -1, 224, 44,
+ 50, 225, 293, -1, 224, 37, 225, 293, -1, 224,
+ 292, 225, 293, -1, 224, 38, 225, 293, -1, 224,
+ 39, 225, 293, -1, 224, 40, 225, 293, -1, 224,
+ 41, 225, 293, -1, 224, 42, 225, 293, -1, 224,
+ 43, 225, 293, -1, 224, 45, 45, 293, -1, 224,
+ 45, 122, 293, -1, 224, 44, 45, 293, -1, 224,
+ 44, 122, 293, -1, 224, 222, 45, 293, -1, 290,
+ 288, 285, -1, 48, 288, 290, -1, 49, 288, 290,
+ -1, 46, 288, 290, -1, 48, 288, 48, -1, 48,
+ 288, 49, -1, 49, 288, 48, -1, 49, 288, 49,
+ -1, 46, 288, 46, -1, 46, 288, 223, -1, 48,
+ 288, 46, -1, 49, 288, 46, -1, 48, -1, 49,
-1, 42, -1, 43, -1, 45, -1, 122, -1, 45,
- 292, 35, -1, 12, 288, 228, 35, -1, 229, -1,
- 228, 122, 229, -1, 292, 230, -1, -1, 98, -1,
+ 293, 35, -1, 12, 289, 228, 35, -1, 229, -1,
+ 228, 122, 229, -1, 293, 230, -1, -1, 98, -1,
9, 46, 122, 250, 35, -1, 233, -1, 234, -1,
243, -1, 26, 35, 235, 238, 35, 240, 27, 35,
-1, -1, 236, -1, 237, -1, 236, 237, -1, 30,
@@ -1011,12 +1012,12 @@
14, 250, 35, 15, 249, -1, -1, 122, 250, -1,
-1, 241, -1, 242, -1, 241, 242, -1, 31, 254,
35, -1, 227, -1, 244, 35, -1, 251, 123, 245,
- -1, 289, 123, 245, -1, 245, -1, 247, -1, 246,
+ -1, 290, 123, 245, -1, 245, -1, 247, -1, 246,
-1, 250, 129, 249, 261, -1, 248, 261, -1, 250,
- -1, 46, -1, 292, -1, 50, -1, 52, -1, 46,
- -1, 292, -1, 50, -1, 120, 252, 121, -1, -1,
- 253, -1, 254, -1, 253, 122, 254, -1, 289, 255,
- -1, 46, 55, 289, -1, -1, 255, 256, -1, 102,
+ -1, 46, -1, 293, -1, 50, -1, 52, -1, 46,
+ -1, 293, -1, 50, -1, 120, 252, 121, -1, -1,
+ 253, -1, 254, -1, 253, 122, 254, -1, 290, 255,
+ -1, 46, 55, 290, -1, -1, 255, 256, -1, 102,
-1, 103, -1, 100, -1, 99, 278, -1, 258, -1,
259, -1, 268, -1, 260, -1, 269, -1, 18, 261,
35, -1, 33, 245, 35, -1, 19, 261, 35, -1,
@@ -1029,75 +1030,76 @@
35, -1, -1, 276, 277, -1, 101, -1, 99, 278,
-1, -1, 279, -1, 120, 46, 121, -1, 281, 35,
-1, 282, -1, 283, -1, 17, 284, -1, 16, 284,
- -1, 38, 292, 123, 48, -1, 39, 292, 123, 49,
- -1, 41, 292, 123, 46, -1, 46, 292, 123, 286,
- -1, 289, -1, 286, -1, 46, -1, 48, -1, 49,
- -1, 54, -1, 56, -1, 57, -1, 58, -1, 59,
- -1, 61, -1, 60, -1, 38, -1, 39, -1, 40,
- -1, 41, -1, 290, -1, 291, -1, 292, -1, 50,
- -1, 51, -1, 53, -1, 52, -1, 37, -1, 293,
- -1, 42, -1, 43, -1, 45, -1, 38, -1, 39,
- -1, 41, -1, 40, -1, 44, -1, 130, -1, 131,
- -1, 132, -1, 133, -1, 130, -1, 134, -1, 135,
- -1, 136, -1, 137, -1, 138, -1, 132, -1, 139,
- -1, 69, -1, 62, -1, 63, -1, 64, -1, 66,
- -1, 67, -1, 65, -1, 68, -1, 57, -1, 59,
- -1, 58, -1, 61, -1, 60, -1, 56, -1, 75,
- -1, 76, -1, 77, -1, 78, -1, 81, -1, 79,
- -1, 80, -1, 82, -1, 83, -1, 71, -1, 72,
- -1, 70, -1, 298, 299, -1, 143, -1, 300, -1,
- 299, 300, -1, 301, -1, 164, 35, -1, 231, -1,
- 160, 35, -1, 146, 35, -1, 190, -1, 36, 302,
- -1, 303, 302, -1, 305, -1, 198, -1, 305, -1,
- 304, 172, 36, -1, 118, -1, 205, 207, 35, -1
+ -1, 38, 293, 123, 48, -1, 39, 293, 123, 49,
+ -1, 41, 293, 123, 46, -1, 46, 293, 123, 286,
+ -1, 290, -1, 286, -1, 46, -1, 48, -1, 49,
+ -1, 54, -1, 47, -1, 46, -1, 47, -1, 56,
+ -1, 57, -1, 58, -1, 59, -1, 61, -1, 60,
+ -1, 38, -1, 39, -1, 40, -1, 41, -1, 291,
+ -1, 292, -1, 293, -1, 50, -1, 51, -1, 53,
+ -1, 52, -1, 37, -1, 294, -1, 42, -1, 43,
+ -1, 45, -1, 38, -1, 39, -1, 41, -1, 40,
+ -1, 44, -1, 130, -1, 131, -1, 132, -1, 133,
+ -1, 130, -1, 134, -1, 135, -1, 136, -1, 137,
+ -1, 138, -1, 132, -1, 139, -1, 69, -1, 62,
+ -1, 63, -1, 64, -1, 66, -1, 67, -1, 65,
+ -1, 68, -1, 57, -1, 59, -1, 58, -1, 61,
+ -1, 60, -1, 56, -1, 75, -1, 76, -1, 77,
+ -1, 78, -1, 81, -1, 79, -1, 80, -1, 82,
+ -1, 83, -1, 71, -1, 72, -1, 70, -1, 299,
+ 300, -1, 143, -1, 301, -1, 300, 301, -1, 302,
+ -1, 164, 35, -1, 231, -1, 160, 35, -1, 146,
+ 35, -1, 190, -1, 36, 303, -1, 304, 303, -1,
+ 306, -1, 198, -1, 306, -1, 305, 172, 36, -1,
+ 118, -1, 205, 207, 35, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 551, 551, 552, 557, 563, 564, 567, 568, 571,
- 572, 573, 574, 575, 576, 577, 578, 579, 586, 587,
- 590, 594, 600, 607, 608, 611, 612, 615, 619, 620,
- 623, 624, 627, 630, 631, 634, 638, 649, 653, 655,
- 659, 665, 669, 673, 678, 679, 683, 685, 689, 693,
- 699, 703, 707, 708, 711, 712, 715, 717, 719, 721,
- 723, 725, 727, 729, 731, 733, 735, 737, 739, 741,
- 745, 750, 754, 758, 767, 778, 780, 782, 786, 795,
- 796, 809, 813, 818, 819, 823, 824, 825, 828, 835,
- 841, 842, 852, 854, 857, 858, 859, 860, 861, 862,
- 863, 864, 865, 866, 867, 868, 869, 870, 871, 877,
- 880, 885, 886, 891, 892, 895, 897, 905, 913, 914,
- 916, 919, 925, 926, 935, 936, 937, 938, 946, 950,
- 954, 963, 970, 977, 980, 981, 984, 993, 1000, 1003,
- 1004, 1007, 1008, 1011, 1047, 1049, 1053, 1055, 1060, 1062,
- 1066, 1089, 1093, 1095, 1104, 1115, 1127, 1137, 1140, 1141,
- 1144, 1153, 1162, 1167, 1172, 1193, 1198, 1239, 1257, 1264,
- 1269, 1280, 1291, 1302, 1313, 1318, 1323, 1328, 1338, 1357,
- 1391, 1393, 1395, 1397, 1399, 1401, 1403, 1405, 1410, 1419,
- 1421, 1423, 1425, 1427, 1429, 1431, 1433, 1435, 1437, 1449,
- 1454, 1456, 1458, 1460, 1462, 1464, 1466, 1468, 1470, 1472,
- 1474, 1476, 1478, 1509, 1535, 1543, 1552, 1561, 1563, 1565,
- 1567, 1569, 1573, 1578, 1580, 1585, 1586, 1589, 1590, 1593,
- 1594, 1597, 1605, 1609, 1611, 1615, 1619, 1620, 1623, 1638,
- 1642, 1643, 1646, 1658, 1659, 1663, 1665, 1669, 1673, 1675,
- 1677, 1683, 1684, 1689, 1690, 1694, 1696, 1705, 1707, 1711,
- 1715, 1717, 1719, 1723, 1724, 1727, 1747, 1754, 1756, 1766,
- 1783, 1785, 1787, 1791, 1800, 1805, 1812, 1813, 1817, 1819,
- 1823, 1825, 1830, 1831, 1835, 1837, 1839, 1841, 1851, 1855,
- 1856, 1857, 1858, 1861, 1866, 1877, 1884, 1889, 1890, 1894,
- 1896, 1900, 1901, 1904, 1908, 1912, 1916, 1925, 1935, 1936,
- 1941, 1943, 1948, 1953, 1954, 1958, 1960, 1964, 1970, 1971,
- 1975, 1977, 1985, 1986, 1990, 1994, 1997, 1998, 2001, 2005,
- 2009, 2011, 2013, 2015, 2023, 2024, 2028, 2029, 2030, 2031,
- 2034, 2035, 2036, 2037, 2038, 2039, 2042, 2043, 2044, 2045,
- 2053, 2056, 2057, 2068, 2069, 2070, 2071, 2075, 2076, 2079,
- 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2089, 2090, 2091,
- 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103,
- 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113,
- 2114, 2115, 2116, 2122, 2123, 2124, 2125, 2126, 2127, 2128,
- 2129, 2130, 2131, 2132, 2133, 2145, 2153, 2157, 2158, 2161,
- 2162, 2163, 2164, 2165, 2166, 2169, 2171, 2172, 2175, 2176,
- 2179, 2183, 2188
+ 0, 554, 554, 555, 560, 566, 567, 570, 571, 574,
+ 575, 576, 577, 578, 579, 580, 581, 582, 589, 590,
+ 593, 597, 603, 610, 611, 614, 615, 618, 622, 623,
+ 626, 627, 630, 633, 634, 637, 641, 652, 656, 658,
+ 662, 668, 672, 676, 681, 682, 686, 688, 692, 696,
+ 702, 706, 710, 711, 714, 715, 718, 720, 722, 724,
+ 726, 728, 730, 732, 734, 736, 738, 740, 742, 744,
+ 748, 753, 757, 761, 770, 781, 783, 785, 789, 798,
+ 799, 812, 816, 821, 822, 826, 827, 828, 831, 838,
+ 844, 845, 855, 857, 860, 861, 862, 863, 864, 865,
+ 866, 867, 868, 869, 870, 871, 872, 873, 874, 880,
+ 883, 888, 889, 894, 895, 898, 900, 908, 916, 917,
+ 919, 922, 928, 929, 938, 939, 940, 941, 949, 953,
+ 957, 966, 973, 980, 983, 984, 987, 996, 1003, 1006,
+ 1007, 1010, 1011, 1014, 1050, 1052, 1056, 1058, 1063, 1065,
+ 1069, 1092, 1096, 1098, 1107, 1118, 1130, 1140, 1143, 1144,
+ 1147, 1156, 1165, 1170, 1175, 1196, 1201, 1242, 1260, 1267,
+ 1272, 1283, 1294, 1305, 1316, 1321, 1326, 1331, 1341, 1360,
+ 1394, 1396, 1398, 1400, 1402, 1404, 1406, 1408, 1413, 1422,
+ 1424, 1426, 1428, 1430, 1432, 1434, 1436, 1438, 1440, 1452,
+ 1457, 1459, 1461, 1463, 1465, 1467, 1469, 1471, 1473, 1475,
+ 1477, 1479, 1481, 1512, 1538, 1546, 1555, 1564, 1566, 1568,
+ 1570, 1572, 1576, 1581, 1583, 1588, 1589, 1592, 1593, 1596,
+ 1597, 1600, 1608, 1612, 1614, 1618, 1622, 1623, 1626, 1641,
+ 1645, 1646, 1649, 1661, 1662, 1666, 1668, 1672, 1676, 1678,
+ 1680, 1686, 1687, 1692, 1693, 1697, 1699, 1708, 1710, 1714,
+ 1718, 1720, 1722, 1726, 1727, 1730, 1750, 1757, 1759, 1769,
+ 1786, 1788, 1790, 1794, 1803, 1808, 1815, 1816, 1820, 1822,
+ 1826, 1828, 1833, 1834, 1838, 1840, 1842, 1844, 1854, 1858,
+ 1859, 1860, 1861, 1864, 1869, 1880, 1887, 1892, 1893, 1897,
+ 1899, 1903, 1904, 1907, 1911, 1915, 1919, 1928, 1938, 1939,
+ 1944, 1946, 1951, 1956, 1957, 1961, 1963, 1967, 1973, 1974,
+ 1978, 1980, 1988, 1989, 1993, 1997, 2000, 2001, 2004, 2008,
+ 2012, 2014, 2016, 2018, 2026, 2027, 2031, 2032, 2033, 2034,
+ 2035, 2038, 2039, 2042, 2043, 2044, 2045, 2046, 2047, 2050,
+ 2051, 2052, 2053, 2061, 2064, 2065, 2076, 2077, 2078, 2079,
+ 2083, 2084, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094,
+ 2097, 2098, 2099, 2102, 2103, 2104, 2105, 2106, 2107, 2108,
+ 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118,
+ 2119, 2120, 2121, 2122, 2123, 2124, 2130, 2131, 2132, 2133,
+ 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2153, 2161,
+ 2165, 2166, 2169, 2170, 2171, 2172, 2173, 2174, 2177, 2179,
+ 2180, 2183, 2184, 2187, 2191, 2196
};
#endif
@@ -1171,8 +1173,8 @@
"opt_return_expressions", "return_expressions", "return_expression",
"arg_flags", "arg_flag", "opt_paren_string", "paren_string",
"const_decl_stat", "const_stat", "const_decl", "globalconst_decl",
- "const_tail", "expression", "constant", "rel_op", "type", "target",
- "symbol", "reg", "identifier", "keyword", "unop", "binop",
+ "const_tail", "expression", "constant", "stringconst", "rel_op", "type",
+ "target", "symbol", "reg", "identifier", "keyword", "unop", "binop",
"augmented_op", "pasm_contents", "pasm_init", "pasm_lines", "pasm_line",
"pasm_statement", "opt_pasm_instruction", "pasm_sub_directive",
"pasm_sub_head", "pasm_instruction", 0
@@ -1238,15 +1240,15 @@
271, 271, 272, 273, 273, 274, 274, 275, 276, 276,
277, 277, 278, 278, 279, 280, 281, 281, 282, 283,
284, 284, 284, 284, 285, 285, 286, 286, 286, 286,
- 287, 287, 287, 287, 287, 287, 288, 288, 288, 288,
- 289, 290, 290, 291, 291, 291, 291, 292, 292, 293,
- 293, 293, 293, 293, 293, 293, 293, 294, 294, 294,
- 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
- 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
+ 286, 287, 287, 288, 288, 288, 288, 288, 288, 289,
+ 289, 289, 289, 290, 291, 291, 292, 292, 292, 292,
+ 293, 293, 294, 294, 294, 294, 294, 294, 294, 294,
295, 295, 295, 296, 296, 296, 296, 296, 296, 296,
- 296, 296, 296, 296, 296, 297, 298, 299, 299, 300,
- 300, 300, 300, 300, 300, 301, 301, 301, 302, 302,
- 303, 304, 305
+ 296, 296, 296, 296, 296, 296, 296, 296, 296, 296,
+ 296, 296, 296, 296, 296, 296, 297, 297, 297, 297,
+ 297, 297, 297, 297, 297, 297, 297, 297, 298, 299,
+ 300, 300, 301, 301, 301, 301, 301, 301, 302, 302,
+ 302, 303, 303, 304, 305, 306
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@@ -1292,9 +1294,9 @@
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 1, 2, 1,
- 2, 1, 2, 2, 1, 2, 2, 1, 1, 1,
- 3, 1, 3
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
+ 1, 2, 1, 2, 1, 2, 2, 1, 2, 2,
+ 1, 1, 1, 3, 1, 3
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1302,412 +1304,418 @@
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
- 0, 5, 5, 0, 6, 406, 3, 0, 2, 0,
+ 0, 5, 5, 0, 6, 409, 3, 0, 2, 0,
1, 0, 0, 0, 0, 0, 136, 0, 0, 111,
- 421, 0, 18, 19, 0, 0, 0, 414, 139, 411,
- 405, 407, 409, 0, 54, 417, 0, 0, 0, 0,
+ 424, 0, 18, 19, 0, 0, 0, 417, 139, 414,
+ 408, 410, 412, 0, 54, 420, 0, 0, 0, 0,
0, 0, 5, 7, 17, 14, 15, 16, 12, 13,
- 11, 9, 54, 10, 0, 38, 39, 44, 128, 418,
- 415, 419, 357, 362, 363, 365, 364, 359, 360, 366,
- 361, 22, 358, 0, 113, 0, 413, 23, 412, 410,
- 336, 337, 338, 353, 354, 356, 355, 339, 0, 0,
- 140, 141, 144, 149, 145, 0, 146, 148, 147, 408,
- 416, 0, 41, 0, 37, 53, 51, 52, 0, 0,
- 0, 0, 328, 0, 6, 4, 0, 0, 48, 0,
- 45, 46, 20, 111, 117, 118, 122, 0, 114, 115,
- 120, 110, 0, 24, 25, 27, 353, 0, 152, 335,
- 334, 350, 351, 352, 422, 0, 150, 420, 57, 58,
- 59, 56, 322, 0, 322, 60, 0, 61, 62, 0,
- 0, 0, 55, 0, 0, 0, 0, 0, 0, 8,
- 79, 274, 0, 273, 43, 0, 119, 0, 112, 0,
- 0, 0, 151, 0, 142, 0, 65, 323, 0, 66,
- 71, 63, 67, 68, 69, 42, 0, 0, 0, 0,
- 40, 90, 78, 238, 47, 124, 111, 126, 125, 121,
- 123, 116, 28, 26, 153, 0, 0, 76, 0, 72,
- 73, 77, 75, 330, 331, 332, 333, 0, 0, 80,
- 127, 0, 0, 0, 29, 30, 0, 33, 34, 324,
- 64, 70, 0, 0, 50, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 136, 359, 360, 366, 361,
- 268, 353, 276, 0, 49, 91, 93, 107, 109, 105,
- 106, 108, 104, 103, 94, 0, 139, 135, 102, 0,
- 95, 0, 0, 96, 97, 98, 101, 239, 240, 241,
- 0, 262, 264, 263, 0, 267, 0, 100, 288, 289,
- 291, 290, 292, 99, 0, 326, 327, 0, 352, 358,
- 346, 347, 348, 349, 83, 0, 0, 35, 21, 31,
- 32, 74, 130, 0, 329, 297, 0, 0, 308, 313,
- 243, 0, 0, 92, 0, 0, 0, 0, 0, 277,
- 278, 282, 129, 133, 134, 137, 138, 145, 157, 188,
- 357, 362, 363, 365, 364, 359, 360, 366, 361, 336,
- 337, 338, 0, 0, 0, 351, 259, 266, 0, 0,
- 325, 404, 402, 403, 0, 0, 393, 394, 395, 396,
- 398, 399, 397, 400, 401, 0, 0, 0, 0, 82,
- 36, 0, 233, 236, 336, 0, 298, 299, 302, 301,
- 318, 305, 293, 295, 0, 0, 309, 310, 0, 0,
- 314, 315, 0, 0, 244, 245, 132, 294, 131, 231,
- 0, 0, 275, 0, 280, 0, 229, 230, 0, 0,
+ 11, 9, 54, 10, 0, 38, 39, 44, 128, 421,
+ 418, 422, 360, 365, 366, 368, 367, 362, 363, 369,
+ 364, 22, 361, 0, 113, 0, 416, 23, 415, 413,
+ 336, 340, 337, 338, 356, 357, 359, 358, 339, 0,
+ 0, 140, 141, 144, 149, 145, 0, 146, 148, 147,
+ 411, 419, 0, 41, 0, 37, 53, 51, 52, 0,
+ 0, 0, 0, 328, 0, 6, 4, 0, 0, 48,
+ 0, 45, 46, 20, 111, 117, 118, 122, 0, 114,
+ 115, 120, 110, 0, 24, 25, 27, 356, 0, 152,
+ 335, 334, 353, 354, 355, 425, 0, 150, 423, 57,
+ 58, 59, 56, 322, 0, 322, 60, 0, 61, 62,
+ 0, 0, 0, 55, 0, 0, 0, 0, 0, 0,
+ 8, 79, 274, 0, 273, 43, 0, 119, 0, 112,
+ 0, 0, 0, 151, 0, 142, 0, 65, 323, 0,
+ 66, 71, 63, 67, 68, 69, 42, 0, 0, 0,
+ 0, 40, 90, 78, 238, 47, 124, 111, 126, 125,
+ 121, 123, 116, 28, 26, 153, 0, 0, 76, 0,
+ 72, 73, 77, 75, 330, 331, 332, 333, 0, 0,
+ 80, 127, 0, 0, 0, 29, 30, 0, 33, 34,
+ 324, 64, 70, 0, 0, 50, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 136, 227, 228, 369,
+ 364, 268, 356, 276, 0, 49, 91, 93, 107, 109,
+ 105, 106, 108, 104, 103, 94, 0, 139, 135, 102,
+ 0, 95, 0, 0, 96, 97, 98, 101, 239, 240,
+ 241, 0, 262, 264, 263, 0, 267, 0, 100, 288,
+ 289, 291, 290, 292, 99, 0, 326, 327, 0, 355,
+ 361, 349, 350, 351, 352, 83, 0, 0, 35, 21,
+ 31, 32, 74, 130, 0, 329, 297, 0, 0, 308,
+ 313, 243, 0, 0, 92, 0, 0, 0, 0, 0,
+ 277, 278, 282, 129, 133, 134, 137, 138, 145, 157,
+ 188, 360, 365, 366, 368, 367, 362, 363, 369, 364,
+ 336, 337, 338, 0, 0, 0, 354, 259, 266, 0,
+ 0, 325, 407, 405, 406, 0, 0, 396, 397, 398,
+ 399, 401, 402, 400, 403, 404, 0, 0, 0, 0,
+ 82, 36, 0, 233, 236, 336, 0, 298, 299, 302,
+ 301, 318, 305, 293, 295, 0, 0, 309, 310, 0,
+ 0, 314, 315, 0, 0, 244, 245, 132, 294, 131,
+ 231, 0, 0, 275, 0, 280, 0, 229, 230, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 340, 341,
- 342, 343, 345, 344, 0, 0, 0, 0, 0, 0,
- 0, 272, 270, 271, 0, 269, 260, 170, 171, 174,
- 172, 173, 175, 357, 162, 160, 161, 353, 367, 368,
- 369, 0, 164, 165, 261, 0, 351, 358, 0, 169,
- 0, 81, 89, 322, 286, 284, 285, 0, 84, 86,
- 87, 85, 232, 0, 237, 235, 0, 296, 0, 304,
- 0, 0, 311, 0, 0, 316, 0, 0, 0, 0,
- 0, 246, 179, 281, 279, 283, 143, 200, 202, 203,
- 204, 205, 206, 207, 0, 0, 0, 0, 0, 0,
- 0, 0, 361, 210, 0, 211, 208, 209, 221, 225,
- 226, 222, 216, 223, 217, 218, 214, 224, 219, 220,
- 215, 212, 198, 213, 201, 265, 392, 387, 389, 388,
- 391, 390, 380, 381, 382, 385, 383, 384, 386, 379,
- 371, 377, 370, 372, 373, 374, 375, 376, 378, 0,
- 0, 0, 168, 155, 166, 0, 167, 176, 178, 287,
- 0, 234, 303, 300, 322, 320, 319, 312, 307, 317,
- 306, 247, 0, 251, 267, 249, 253, 189, 190, 191,
- 192, 193, 194, 195, 197, 196, 199, 183, 182, 184,
- 186, 180, 187, 185, 181, 0, 0, 177, 0, 321,
- 0, 0, 248, 0, 258, 0, 254, 255, 154, 156,
- 88, 0, 252, 0, 0, 256, 250, 257, 242
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 343,
+ 344, 345, 346, 348, 347, 0, 0, 0, 0, 0,
+ 0, 0, 272, 270, 271, 0, 269, 260, 170, 171,
+ 174, 172, 173, 175, 360, 268, 342, 160, 161, 356,
+ 370, 371, 372, 0, 164, 165, 261, 162, 0, 354,
+ 361, 0, 169, 0, 81, 89, 322, 286, 284, 285,
+ 0, 84, 86, 87, 85, 232, 0, 237, 235, 0,
+ 296, 0, 304, 0, 0, 311, 0, 0, 316, 0,
+ 0, 0, 0, 0, 246, 179, 281, 279, 283, 143,
+ 200, 202, 203, 204, 205, 206, 207, 0, 0, 0,
+ 0, 0, 0, 0, 0, 364, 210, 0, 211, 208,
+ 209, 221, 225, 226, 222, 216, 223, 217, 218, 214,
+ 224, 219, 220, 215, 212, 198, 213, 201, 265, 395,
+ 390, 392, 391, 394, 393, 383, 384, 385, 388, 386,
+ 387, 389, 382, 374, 380, 373, 375, 376, 377, 378,
+ 379, 381, 0, 0, 0, 168, 155, 166, 0, 167,
+ 176, 178, 287, 0, 234, 303, 300, 322, 320, 319,
+ 312, 307, 317, 306, 247, 0, 251, 267, 249, 253,
+ 189, 190, 191, 192, 193, 194, 195, 197, 196, 199,
+ 183, 182, 184, 186, 180, 187, 185, 181, 0, 0,
+ 177, 0, 321, 0, 0, 248, 0, 258, 0, 254,
+ 255, 154, 156, 88, 0, 252, 0, 0, 256, 250,
+ 257, 242
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
-1, 3, 8, 5, 42, 43, 21, 22, 23, 24,
- 132, 133, 134, 233, 234, 235, 236, 237, 238, 45,
- 25, 47, 48, 49, 26, 119, 120, 121, 51, 264,
- 52, 106, 101, 162, 191, 218, 219, 220, 201, 202,
- 229, 314, 388, 498, 499, 500, 227, 265, 266, 267,
- 27, 75, 127, 128, 129, 130, 177, 210, 59, 270,
- 271, 272, 273, 274, 275, 28, 344, 89, 90, 346,
- 91, 92, 93, 94, 137, 277, 278, 482, 279, 483,
- 280, 281, 362, 551, 282, 428, 283, 284, 391, 392,
- 505, 29, 286, 287, 288, 413, 414, 415, 520, 642,
- 645, 646, 647, 289, 290, 291, 292, 293, 294, 464,
- 95, 296, 338, 339, 340, 424, 501, 297, 298, 299,
- 300, 326, 395, 396, 397, 398, 399, 400, 301, 302,
- 405, 406, 407, 409, 410, 411, 509, 606, 186, 187,
- 303, 304, 53, 306, 112, 401, 139, 454, 315, 140,
- 141, 142, 143, 72, 488, 589, 386, 6, 7, 30,
- 31, 32, 60, 33, 34, 35
+ 133, 134, 135, 234, 235, 236, 237, 238, 239, 45,
+ 25, 47, 48, 49, 26, 120, 121, 122, 51, 265,
+ 52, 107, 102, 163, 192, 219, 220, 221, 202, 203,
+ 230, 315, 389, 501, 502, 503, 228, 266, 267, 268,
+ 27, 75, 128, 129, 130, 131, 178, 211, 59, 271,
+ 272, 273, 274, 275, 276, 28, 345, 90, 91, 347,
+ 92, 93, 94, 95, 138, 278, 279, 484, 280, 485,
+ 281, 282, 363, 554, 283, 429, 284, 285, 392, 393,
+ 508, 29, 287, 288, 289, 414, 415, 416, 523, 645,
+ 648, 649, 650, 290, 291, 292, 293, 294, 295, 465,
+ 96, 297, 339, 340, 341, 425, 504, 298, 299, 300,
+ 301, 327, 396, 397, 398, 399, 400, 401, 302, 303,
+ 406, 407, 408, 410, 411, 412, 512, 609, 187, 188,
+ 304, 305, 53, 307, 113, 402, 140, 487, 455, 316,
+ 141, 142, 143, 144, 72, 491, 592, 387, 6, 7,
+ 30, 31, 32, 60, 33, 34, 35
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -591
+#define YYPACT_NINF -577
static const yytype_int16 yypact[] =
{
- -2, 11, 11, 54, -591, -591, -591, 14, -591, 25,
- -591, 49, 58, 75, 3, 96, -591, 715, 111, 35,
- -591, 125, -591, -591, 43, 134, 161, -591, 428, -591,
- 14, -591, -591, 96, -591, -591, 165, 178, 181, 998,
- 108, 202, 172, -591, -591, -591, -591, -591, -591, -591,
- -591, -591, -591, -591, 128, -591, -591, 206, -591, -591,
- -591, -591, -591, -591, -591, -591, -591, -591, -591, -591,
- -591, -591, -591, 143, 23, 221, -591, 715, -591, -591,
- -591, -591, -591, 147, -591, -591, -591, -591, 742, 237,
- 152, -591, -591, -591, -591, 151, -591, -591, 157, -591,
- -591, 613, -591, 160, -591, -591, -591, -591, 715, 715,
- 715, 715, -591, 166, 25, -591, 598, 292, -591, 164,
- 169, -591, -591, 35, -591, -591, -591, 175, 168, -591,
- -591, -591, 179, 180, -591, -591, -591, 56, -591, -591,
- -591, -591, -591, -591, -591, 428, -591, -591, -591, -591,
- -591, -591, 185, 187, 185, -591, 189, -591, -591, 185,
- 185, 185, -591, 276, 200, 201, 216, 217, 295, -591,
- -591, -591, 310, -591, -591, 206, -591, -3, -591, 23,
- 311, 715, -591, 742, -591, 302, -591, -591, 998, -591,
- 223, -591, -591, -591, -591, -591, 301, 304, 308, 113,
- -591, -591, 342, -591, -591, -591, 35, -591, -591, -591,
- -591, -591, 115, -591, -591, 234, 235, -591, 236, 240,
- -591, -591, -591, -591, -591, -591, -591, 275, 239, -591,
- -591, 239, 248, 253, 115, -591, 326, -591, -591, -591,
- -591, -591, 223, 328, -591, 239, 108, 244, 244, 331,
- 332, 334, 250, 984, 527, 641, 760, 778, 562, 715,
- -591, 84, 453, 336, -591, -591, -591, -591, -591, -591,
- -591, -591, -591, -591, -591, 337, 428, -591, -591, 338,
- -591, 339, 796, -591, -591, -591, -591, -591, -591, -591,
- 340, -591, -591, -591, 244, 247, 255, -591, -591, -591,
- -591, -591, -591, -591, 344, -591, -591, 655, -72, 151,
- -591, -591, -591, -591, -591, 715, 272, -591, -591, -591,
- -591, -591, -591, 715, -591, 814, 349, 350, 368, 370,
- 359, 357, 358, -591, 362, 363, 271, 345, 278, 279,
- -591, -591, -591, -591, -591, -591, -591, 282, -591, -591,
- -6, -6, -6, -6, -6, -6, -6, 407, -5, 174,
- 174, 174, 364, -6, 174, -6, -591, -591, 968, 984,
- -591, -591, -591, -591, 883, 900, -591, -591, -591, -591,
- -591, -591, -591, -591, -591, 26, 742, 284, 117, -591,
- -591, -20, -591, 312, 365, 297, 299, -591, -591, -591,
- -591, -591, -591, -591, 742, 396, 368, -591, 742, 397,
- 370, -591, 742, 76, 359, -591, -591, -591, -591, -591,
- 742, 562, -591, 453, 141, 742, -591, -591, 715, 715,
- 715, 715, 715, 715, 715, 378, 379, 380, 382, 386,
- 387, 388, 390, 1008, -6, 715, 715, 715, -591, -591,
- -591, -591, -591, -591, 832, 849, 866, 715, 715, 742,
- 715, -591, -591, -591, 244, -591, -591, -591, -591, -591,
- -591, -591, -591, 149, 528, 612, 612, 84, -591, -591,
- -591, 428, -591, -591, -591, 612, 401, -21, 742, -591,
- 742, -591, -591, 185, -591, -591, -591, 317, -591, -591,
- -591, -591, -591, 715, -591, -591, 742, -591, 814, 79,
- 403, 404, -591, 418, 423, -591, 424, 292, 984, 292,
- 425, -591, -591, -591, -591, -591, -591, -591, -591, -591,
- -591, -591, -591, -591, 715, 715, 715, 715, 715, 715,
- 715, 715, 715, -591, 715, -591, -591, -591, -591, -591,
- -591, -591, -591, -591, -591, -591, -591, -591, -591, -591,
- -591, -591, -591, -591, -591, -591, -591, -591, -591, -591,
- -591, -591, -591, -591, -591, -591, -591, -591, -591, -591,
- -591, -591, -591, -591, -591, -591, -591, -591, -591, 951,
- 917, 934, -591, 320, 341, 742, -591, -591, -591, -591,
- 223, -591, -591, -591, 185, -591, -591, -591, -591, -591,
- -591, -591, 426, 353, -591, -591, 21, -591, -591, -591,
- -591, -591, -591, -591, -591, -591, -591, -591, -591, -591,
- -591, -591, -591, -591, -591, 428, 428, -591, 366, -591,
- 447, 292, -591, 453, -591, 456, 21, -591, 152, 152,
- -591, 968, -591, 449, 450, -591, -591, -591, -591
+ 53, -4, -4, 18, -577, -577, -577, 15, -577, 71,
+ -577, -11, 31, 45, -12, 146, -577, 672, 89, 12,
+ -577, 105, -577, -577, 64, 116, 164, -577, 640, -577,
+ 15, -577, -577, 146, -577, -577, 145, 155, 158, 1018,
+ 106, 183, 175, -577, -577, -577, -577, -577, -577, -577,
+ -577, -577, -577, -577, 108, -577, -577, 186, -577, -577,
+ -577, -577, -577, -577, -577, -577, -577, -577, -577, -577,
+ -577, -577, -577, 121, 23, 204, -577, 672, -577, -577,
+ -577, -577, -577, -577, 117, -577, -577, -577, -577, 849,
+ 207, 122, -577, -577, -577, -577, 123, -577, -577, 124,
+ -577, -577, 696, -577, 126, -577, -577, -577, -577, 672,
+ 672, 672, 672, -577, 129, 71, -577, 634, 1004, -577,
+ 120, 133, -577, -577, 12, -577, -577, -577, 125, 139,
+ -577, -577, -577, 134, 140, -577, -577, -577, -8, -577,
+ -577, -577, -577, -577, -577, -577, 640, -577, -577, -577,
+ -577, -577, -577, 160, 161, 160, -577, 162, -577, -577,
+ 160, 160, 160, -577, 237, 163, 165, 166, 209, 238,
+ -577, -577, -577, 250, -577, -577, 186, -577, -5, -577,
+ 23, 298, 672, -577, 849, -577, 294, -577, -577, 1018,
+ -577, 25, -577, -577, -577, -577, -577, 293, 295, 296,
+ 149, -577, -577, 335, -577, -577, -577, 12, -577, -577,
+ -577, -577, -577, 111, -577, -577, 224, 225, -577, 228,
+ 229, -577, -577, -577, -577, -577, -577, -577, 531, 168,
+ -577, -577, 168, 240, 241, 111, -577, 319, -577, -577,
+ -577, -577, -577, 25, 320, -577, 168, 106, 236, 236,
+ 322, 323, 324, 242, 355, 622, 748, 674, 734, 410,
+ 672, -577, 19, 285, 325, -577, -577, -577, -577, -577,
+ -577, -577, -577, -577, -577, -577, 328, 640, -577, -577,
+ 330, -577, 331, 867, -577, -577, -577, -577, -577, -577,
+ -577, 332, -577, -577, -577, 236, 239, 251, -577, -577,
+ -577, -577, -577, -577, -577, 340, -577, -577, 762, -18,
+ 123, -577, -577, -577, -577, -577, 672, 265, -577, -577,
+ -577, -577, -577, -577, 672, -577, 885, 342, 343, 359,
+ 360, 350, 348, 367, -577, 368, 375, 288, 364, 299,
+ 301, -577, -577, -577, -577, -577, -577, -577, 302, -577,
+ -577, -24, -24, -24, -24, -24, -24, -24, 118, -22,
+ 156, 156, 156, 376, -24, 156, -24, -577, -577, 988,
+ 355, -577, -577, -577, -577, 253, 937, -577, -577, -577,
+ -577, -577, -577, -577, -577, -577, 430, 849, 305, 90,
+ -577, -577, -16, -577, 334, 379, 314, 315, -577, -577,
+ -577, -577, -577, -577, -577, 849, 413, 359, -577, 849,
+ 414, 360, -577, 849, 99, 350, -577, -577, -577, -577,
+ -577, 849, 410, -577, 285, -13, 849, -577, -577, 672,
+ 672, 672, 672, 672, 672, 672, 393, 395, 398, 400,
+ 401, 412, 419, 420, 1028, -24, 672, 672, 672, -577,
+ -577, -577, -577, -577, -577, 226, 903, 920, 672, 672,
+ 849, 672, -577, -577, -577, 236, -577, -577, -577, -577,
+ -577, -577, -577, -577, 552, 252, -577, 639, 639, 19,
+ -577, -577, -577, 640, -577, -577, -577, -577, 639, 449,
+ -20, 849, -577, 849, -577, -577, 160, -577, -577, -577,
+ 365, -577, -577, -577, -577, -577, 672, -577, -577, 849,
+ -577, 885, 86, 451, 452, -577, 453, 455, -577, 457,
+ 1004, 355, 1004, 475, -577, -577, -577, -577, -577, -577,
+ -577, -577, -577, -577, -577, -577, -577, 672, 672, 672,
+ 672, 672, 672, 672, 672, 672, -577, 672, -577, -577,
+ -577, -577, -577, -577, -577, -577, -577, -577, -577, -577,
+ -577, -577, -577, -577, -577, -577, -577, -577, -577, -577,
+ -577, -577, -577, -577, -577, -577, -577, -577, -577, -577,
+ -577, -577, -577, -577, -577, -577, -577, -577, -577, -577,
+ -577, -577, 456, 954, 971, -577, 369, 390, 849, -577,
+ -577, -577, -577, 25, -577, -577, -577, 160, -577, -577,
+ -577, -577, -577, -577, -577, 478, 392, -577, -577, 24,
+ -577, -577, -577, -577, -577, -577, -577, -577, -577, -577,
+ -577, -577, -577, -577, -577, -577, -577, -577, 640, 640,
+ -577, 394, -577, 501, 1004, -577, 285, -577, 490, 24,
+ -577, 122, 122, -577, 988, -577, 483, 484, -577, -577,
+ -577, -577
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -591, -591, -591, 39, -591, 374, 8, -591, -591, -591,
- -591, -591, 327, -591, -591, 273, -591, -591, -591, -591,
- -1, -591, -591, -591, 10, -591, -591, 314, -591, -591,
- -591, 322, 459, -591, -591, -591, -591, -235, -591, -591,
- -591, -591, -591, -591, -591, -591, -591, -591, 258, -591,
- -207, -102, -591, -591, 335, -591, -591, -591, -193, -591,
- -591, -591, -591, -591, -591, -217, -591, 254, -397, -591,
- 371, 34, -591, -91, -591, -591, -591, -591, -591, -591,
- -591, -591, -591, -591, -591, -267, -591, -590, -591, 28,
- -591, -172, -591, -591, -591, -591, -591, 118, -591, -591,
- -591, -591, -113, -591, -591, -240, -591, -591, 16, -116,
- -115, 288, -591, -591, -414, -591, 123, -591, -591, -591,
- -591, -236, -591, -591, 33, -591, -229, 36, -591, -591,
- -591, -591, 142, -591, -591, 140, -591, -591, -149, -19,
- -591, -591, -147, -591, 313, -82, -27, -155, -148, -209,
- -591, -25, -17, -211, -591, -332, -591, -591, -591, -591,
- 524, -591, 523, -591, -591, 29
+ -577, -577, -577, 30, -577, 418, 1, -577, -577, -577,
+ -577, -577, 347, -577, -577, 300, -577, -577, -577, -577,
+ -1, -577, -577, -577, 7, -577, -577, 358, -577, -577,
+ -577, 356, 485, -577, -577, -577, -577, -239, -577, -577,
+ -577, -577, -577, -577, -577, -577, -577, -577, 281, -577,
+ -201, -104, -577, -577, 371, -577, -577, -577, -199, -577,
+ -577, -577, -577, -577, -577, -215, -577, 262, -414, -577,
+ 406, 73, -577, -57, -577, -577, -577, -577, -577, -577,
+ -577, -577, -577, -577, -577, -307, -577, -576, -577, 38,
+ -577, -175, -577, -577, -577, -577, -577, 143, -577, -577,
+ -577, -577, -95, -577, -577, -240, -577, -577, 42, -89,
+ -113, 326, -577, -577, -415, -577, 153, -577, -577, -577,
+ -577, -237, -577, -577, 69, -577, -371, 76, -577, -577,
+ -577, -577, 181, -577, -577, 196, -577, -577, -148, 61,
+ -577, -577, -145, -577, 361, -87, -27, -577, -183, -147,
+ -222, -577, -25, -17, -211, -577, -311, -577, -577, -577,
+ -577, 579, -577, 577, -577, -577, 63
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
number is the opposite. If zero, do what YYDEFACT says.
If YYTABLE_NINF, syntax error. */
-#define YYTABLE_NINF -358
+#define YYTABLE_NINF -364
static const yytype_int16 yytable[] =
{
- 71, 96, 172, 97, 146, 189, 138, 321, 46, 524,
- 276, 98, 327, 332, -159, 502, 309, 44, 307, 50,
- 268, 176, 107, 11, 12, 13, 644, 14, 36, 37,
- 38, 39, 205, 245, 269, 12, 13, 276, 14, 426,
- 446, 9, 40, 309, 61, 307, 4, 268, -273, 334,
- 15, 16, 643, 341, 10, 285, 644, -273, 367, 41,
- 135, 269, 61, 473, 63, 64, 65, 66, 67, 68,
- 69, 70, 474, 364, 475, 476, 477, 84, 85, 86,
- 305, 115, 285, 316, 429, 430, 431, 432, 433, 434,
- 517, 164, 165, 166, 167, 54, 458, 323, 460, 221,
- 173, 214, 503, 88, 230, 518, 55, 305, 519, 206,
- 207, 208, 295, 46, 1, 2, 427, 447, 96, 17,
- 97, 56, 44, 18, 50, 209, 19, 57, 98, 466,
- 17, 58, 20, 16, 18, 123, 124, 125, 295, 295,
- 192, 193, 194, 590, 591, 484, 108, 109, 73, 110,
- 126, 221, 491, 595, 111, 74, 478, 479, 480, 80,
- 76, 81, 82, 77, 135, 469, 472, 87, 481, 78,
- 336, 107, 226, 222, 487, 510, 485, 544, 604, 513,
- 605, 182, 183, 516, -158, 347, -136, -136, -136, -136,
- -136, -136, -136, -136, -136, -136, 79, -136, -136, -136,
- -136, -136, -136, -136, -274, 455, 456, 114, 88, 459,
- 308, 102, 523, -274, 341, 492, 493, 494, 387, 495,
- 496, 497, 231, 232, 103, 222, 263, 104, 565, 653,
- 448, 449, 450, 451, 452, 453, 173, 308, 648, 649,
- 493, 494, 335, 495, 496, 552, 556, 560, 113, 96,
- 117, 97, 118, 263, 295, 363, 131, 365, 122, 98,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 217,
- 295, -274, 144, -136, 145, 88, 243, 310, 311, 312,
- 313, -273, 244, 163, 11, 12, 13, 245, 168, 174,
- 179, 246, 40, 247, 248, 175, 178, 249, 389, 250,
- 180, 251, 181, 252, 489, 185, 393, 188, 253, 190,
- 58, 254, 255, 63, 64, 65, 66, 256, 257, 258,
- 259, 260, 195, 196, 197, 261, 84, 85, 86, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 522, 198,
- 199, 200, 171, 526, 599, 203, 212, 88, 215, 223,
- 228, 465, 173, 224, 225, 239, 240, 241, 317, 318,
- 486, 320, 242, 322, 325, 638, 328, 329, 308, 330,
- 262, 342, 343, 348, 349, 366, 368, 563, 369, 370,
- 628, 631, 634, 390, 402, 403, 592, 19, 404, 412,
- 594, 408, 416, 417, 420, 262, 596, 418, 419, 422,
- 421, 423, 612, 614, 615, 425, 597, 490, 598, 457,
- 504, 527, 528, 529, 530, 531, 532, 533, 507, 511,
- 506, 508, 514, 534, 535, 536, 543, 537, 545, 546,
- 547, 538, 539, 540, 341, 541, -163, 600, 607, 608,
- 561, 562, 635, 564, 435, 436, 437, 438, 439, 440,
- 441, 442, 443, 609, 96, 639, 97, 444, 610, 611,
- 616, 640, 651, 636, 98, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 80, 641, 81, 82, 83, 84,
- 85, 86, 87, 654, 657, 658, 393, 650, 169, 204,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 337,
- 173, 173, 173, 136, 84, 85, 86, 319, 213, 221,
- 216, 116, 333, 637, 211, 593, 184, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 652, 626, 243, 445,
- 345, 601, 521, 655, 613, 656, 11, 12, 13, 245,
- 331, 603, 602, 246, 40, 247, 248, 525, 512, 249,
- 515, 250, 88, 251, 99, 252, 100, 0, 0, 324,
- 253, 0, 58, 0, 255, 63, 64, 65, 66, 256,
- 257, 258, 259, 260, 0, 0, 0, 261, 84, 85,
- 86, 0, 0, 222, 566, 567, 568, 569, 570, 571,
- 572, 573, 574, 575, 576, 577, 578, 579, 0, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 96, 96,
- 97, 97, 136, 84, 85, 86, 0, 0, 98, 98,
- 0, 0, 0, 0, 173, 0, 0, 0, 0, 0,
- 0, 0, 0, 170, 465, 0, 0, 0, 0, 19,
- 0, 0, 0, 0, 0, 0, 0, 262, -268, 147,
- 0, 0, 0, 0, 0, 0, 0, 0, 580, 0,
- 581, 582, 583, 584, 585, 586, 587, 588, 566, 567,
- 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
- 578, 579, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 0, 148, 149, 150,
+ 71, 97, 139, 98, 322, 173, 308, 190, 46, 527,
+ 44, 99, 328, 277, 333, -159, 50, 310, 10, 505,
+ 177, 427, 108, 447, 11, 12, 13, 269, 14, 270,
+ 206, 4, 9, 308, 513, 54, 246, 335, 516, 147,
+ 277, 342, 519, 647, 310, 430, 431, 432, 433, 434,
+ 435, 15, 16, 286, 269, 646, 270, 459, 368, 461,
+ 136, 365, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 218, 116, 647, 36, 37, 38, 39, 61, 55,
+ 286, 12, 13, 306, 14, 317, 496, 497, 40, 498,
+ 499, 56, 165, 166, 167, 168, 61, 215, 428, 324,
+ 448, 174, -273, 231, 89, 41, 506, 207, 208, 209,
+ 306, -273, 57, 520, 46, 296, 44, 183, 184, 97,
+ 17, 98, 50, 210, 18, 494, 73, 19, 521, 99,
+ 467, 522, 74, 20, 222, 124, 125, 126, 547, -274,
+ 76, 296, 296, 89, 109, 110, 486, 111, -274, 89,
+ 127, 78, 112, 470, 473, 436, 437, 438, 439, 440,
+ 441, 442, 443, 444, 488, 136, 593, 594, 445, 1,
+ 2, 483, 108, 227, 223, 490, 17, 598, 456, 457,
+ 18, 58, 460, 16, 77, 607, 222, 608, 495, 496,
+ 497, 103, 498, 499, 500, 80, 81, 82, 83, 79,
+ 526, 104, 342, 88, 105, 337, 311, 312, 313, 314,
+ 115, 309, 449, 450, 451, 452, 453, 454, 232, 233,
+ 348, 193, 194, 195, 651, 652, 223, 264, 568, 114,
+ 118, 656, 119, 555, 559, 563, 123, 174, 309, 132,
+ 446, -274, 145, 336, 146, 175, 179, 89, -273, 164,
+ 97, 169, 98, 388, 264, 181, 364, 296, 366, 176,
+ 99, 180, 182, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 551, 296, 552, 553, 137, 85, 86, 87,
+ 186, 189, 191, 196, 201, 204, 197, -341, 198, 199,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 390,
+ 492, 468, 469, 137, 85, 86, 87, 394, 569, 570,
+ 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
+ 581, 582, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 338, 200, 213, 525, 137, 85, 86, 87, 529,
+ 216, 224, 226, 229, 225, 240, 241, 319, 602, 242,
+ 318, 243, 466, 174, 321, 323, 326, 329, 330, 331,
+ 343, 489, 263, 344, 641, 349, 350, 367, 369, 309,
+ 631, 634, 637, 566, 370, 371, 391, 403, 404, 405,
+ 413, 409, 583, 417, 584, 585, 586, 587, 588, 589,
+ 590, 591, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 261, 418, 419, 600, 172, 601, 615, 617, 618,
+ 420, 421, 530, 531, 532, 533, 534, 535, 536, 422,
+ 423, 458, 595, 424, 342, 426, 597, 546, 493, 548,
+ 549, 550, 507, 599, 509, 510, 514, 511, 537, 517,
+ 538, 564, 565, 539, 567, 540, 541, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 97, 542, 98, 642,
+ 137, 85, 86, 87, 543, 544, 99, 474, 63, 64,
+ 65, 66, 67, 68, 69, 70, 475, 476, 477, 478,
+ 479, 85, 86, 87, -163, 603, 610, 611, 612, 394,
+ 613, 638, 614, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 630, 174, 174, 174, 137, 85, 86, 87,
+ 619, 640, 639, 643, 644, 653, 654, 657, 660, 661,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 214,
+ 629, 655, 244, 170, 205, 320, 334, 117, 245, 346,
+ 11, 12, 13, 246, 604, 217, 222, 247, 40, 248,
+ 249, 212, 185, 250, 658, 251, 596, 252, 524, 253,
+ 480, 481, 482, 616, 254, 659, 58, 255, 256, 63,
+ 64, 65, 66, 257, 258, 259, 260, 261, 528, 332,
+ 606, 262, 85, 86, 87, 605, 223, -158, 515, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, 518, 325, 100,
+ 101, 97, 97, 98, 98, 0, 0, 0, 0, 0,
+ 0, 99, 99, 244, 0, 0, 0, 174, 0, 0,
+ 0, 11, 12, 13, 246, 0, 0, 466, 247, 40,
+ 248, 249, 0, 19, 250, 0, 251, 0, 252, 0,
+ 253, 263, 0, 0, 0, 254, 0, 58, 0, 256,
+ 63, 64, 65, 66, 257, 258, 259, 260, 261, 171,
+ 0, 0, 262, 85, 86, 87, -136, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 569, 570, 571, 572, 573,
+ 574, 575, 576, 577, 578, 579, 580, 581, 582, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 149, 150,
151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, -357, -357, -357, -357, -357, -357, -357, -357, -357,
- -357, -357, -357, -357, -357, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, 384, 0,
- 0, 0, 580, 0, 581, 582, 583, 584, 585, 586,
- 587, 588, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, -357, 0, 0, -357, 0, 0, 0, 0, 0,
- -357, 0, 0, 0, 0, 0, 0, 0, 385, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 80, 0,
- 81, 82, 136, 84, 85, 86, 87, -227, -227, -227,
- -227, -227, -227, -227, -227, -227, -227, 0, -227, -227,
- -227, -227, -227, -227, -227, -228, -228, -228, -228, -228,
- -228, -228, -228, -228, -228, 0, -228, -228, -228, -228,
- -228, -228, -228, 350, 351, 352, 353, 354, 355, 356,
- 357, 358, 359, 0, 360, 361, 136, 84, 85, 86,
+ 161, 162, 148, 0, 19, 0, 0, 0, 0, 0,
+ 0, 0, 263, 0, -362, -362, -362, -362, -362, -362,
+ -362, -362, -362, -362, -362, -362, -362, -362, 0, 0,
+ 0, 0, 0, 0, 89, 0, 0, 0, 0, 583,
+ 0, 584, 585, 586, 587, 588, 589, 590, 591, 0,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, -362, 0, 0, -362, -362, 0,
+ 0, 0, 0, -362, -363, -363, -363, -363, -363, -363,
+ -363, -363, -363, -363, -363, -363, -363, -363, -360, -360,
+ -360, -360, -360, -360, -360, -360, -360, -360, -360, -360,
+ -360, -360, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, 384, 385, 0, 0, 0, 0,
+ 0, 0, 0, 0, -363, 0, 0, -363, -363, 0,
+ 0, 0, 0, -363, 0, 0, 0, 0, -360, 0,
+ 0, -360, 0, 0, 0, 0, 0, -360, 0, 0,
+ 0, 0, 0, 0, 0, 386, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 80, 81, 82, 83, 137,
+ 85, 86, 87, 88, 351, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 81, 361, 362, 137, 85, 86,
+ 87, 88, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 395, 81, 82, 83, 137, 85, 86, 87, 88,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 556,
+ 0, 557, 558, 137, 85, 86, 87, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 560, 0, 561, 562,
+ 137, 85, 86, 87, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 0, 0, 471, 472, 137, 85, 86,
87, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 394, 0, 81, 82, 136, 84, 85, 86, 87, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 548, 0,
- 549, 550, 136, 84, 85, 86, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 553, 0, 554, 555, 136,
- 84, 85, 86, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 557, 0, 558, 559, 136, 84, 85, 86,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 0,
- 0, 467, 468, 136, 84, 85, 86, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 0, 0, 470, 471,
- 136, 84, 85, 86, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 0, 0, 629, 630, 136, 84, 85,
- 86, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 0, 0, 632, 633, 136, 84, 85, 86, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 627, 0, 0,
- 0, 136, 84, 85, 86, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 461, 0, 0, 0, 462, 0,
- 463, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 260, 0, 0, 0, 171, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 105, 62, 63, 64, 65, 66,
- 67, 68, 69, 542
+ 0, 0, 632, 633, 137, 85, 86, 87, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 0, 0, 635,
+ 636, 137, 85, 86, 87, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 462, 0, 0, 0, 463, 0,
+ 464, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 0, 0, 0, 0, 172, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 106, 62, 63, 64, 65, 66,
+ 67, 68, 69, 545
};
static const yytype_int16 yycheck[] =
{
- 17, 28, 117, 28, 95, 154, 88, 242, 9, 423,
- 227, 28, 248, 253, 35, 35, 227, 9, 227, 9,
- 227, 123, 39, 9, 10, 11, 616, 13, 3, 4,
- 5, 6, 35, 12, 227, 10, 11, 254, 13, 45,
- 45, 2, 17, 254, 15, 254, 35, 254, 120, 258,
- 36, 37, 31, 262, 0, 227, 646, 129, 294, 34,
- 77, 254, 33, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 282, 48, 49, 50, 51, 52, 53,
- 227, 42, 254, 231, 351, 352, 353, 354, 355, 356,
- 14, 108, 109, 110, 111, 46, 363, 245, 365, 190,
- 117, 183, 122, 124, 206, 29, 48, 254, 32, 112,
- 113, 114, 227, 114, 116, 117, 122, 122, 145, 105,
- 145, 46, 114, 109, 114, 128, 112, 124, 145, 369,
- 105, 35, 118, 37, 109, 112, 113, 114, 253, 254,
- 159, 160, 161, 475, 476, 385, 38, 39, 37, 41,
- 127, 242, 35, 485, 46, 120, 130, 131, 132, 46,
- 35, 48, 49, 120, 181, 374, 375, 54, 385, 35,
- 261, 188, 199, 190, 385, 404, 385, 444, 99, 408,
- 101, 125, 126, 412, 35, 276, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 35, 48, 49, 50,
- 51, 52, 53, 54, 120, 360, 361, 35, 124, 364,
- 227, 46, 421, 129, 423, 98, 99, 100, 309, 102,
- 103, 104, 107, 108, 46, 242, 227, 46, 464, 643,
- 56, 57, 58, 59, 60, 61, 253, 254, 635, 636,
- 99, 100, 259, 102, 103, 454, 455, 456, 46, 276,
- 122, 276, 46, 254, 369, 282, 35, 282, 115, 276,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 385, 124, 35, 124, 122, 124, 1, 38, 39, 40,
- 41, 124, 7, 123, 9, 10, 11, 12, 122, 125,
- 122, 16, 17, 18, 19, 126, 121, 22, 315, 24,
- 121, 26, 122, 28, 386, 120, 323, 120, 33, 120,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 46, 123, 123, 50, 51, 52, 53, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 420, 123,
- 123, 46, 50, 425, 493, 35, 35, 124, 46, 48,
- 8, 368, 369, 49, 46, 121, 121, 121, 110, 106,
- 385, 35, 122, 35, 120, 600, 35, 35, 385, 35,
- 120, 35, 35, 35, 35, 35, 129, 459, 123, 35,
- 589, 590, 591, 111, 35, 35, 477, 112, 20, 30,
- 481, 21, 35, 35, 123, 120, 487, 35, 35, 121,
- 55, 122, 517, 518, 519, 123, 488, 123, 490, 45,
- 98, 428, 429, 430, 431, 432, 433, 434, 121, 23,
- 55, 122, 25, 45, 45, 45, 443, 45, 445, 446,
- 447, 45, 45, 45, 643, 45, 35, 120, 35, 35,
- 457, 458, 122, 460, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 35, 481, 604, 481, 50, 35, 35,
- 35, 35, 15, 122, 481, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 122, 48, 49, 50, 51,
- 52, 53, 54, 27, 35, 35, 503, 121, 114, 175,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 517, 518, 519, 50, 51, 52, 53, 234, 181, 600,
- 188, 52, 254, 595, 179, 481, 145, 534, 535, 536,
- 537, 538, 539, 540, 541, 542, 641, 544, 1, 122,
- 276, 503, 414, 646, 518, 651, 9, 10, 11, 12,
- 252, 508, 506, 16, 17, 18, 19, 424, 406, 22,
- 410, 24, 124, 26, 30, 28, 33, -1, -1, 246,
- 33, -1, 35, -1, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, -1, -1, -1, 50, 51, 52,
- 53, -1, -1, 600, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, -1, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 635, 636,
- 635, 636, 50, 51, 52, 53, -1, -1, 635, 636,
- -1, -1, -1, -1, 641, -1, -1, -1, -1, -1,
- -1, -1, -1, 35, 651, -1, -1, -1, -1, 112,
- -1, -1, -1, -1, -1, -1, -1, 120, 120, 36,
- -1, -1, -1, -1, -1, -1, -1, -1, 130, -1,
- 132, 133, 134, 135, 136, 137, 138, 139, 56, 57,
+ 17, 28, 89, 28, 243, 118, 228, 155, 9, 424,
+ 9, 28, 249, 228, 254, 35, 9, 228, 0, 35,
+ 124, 45, 39, 45, 9, 10, 11, 228, 13, 228,
+ 35, 35, 2, 255, 405, 46, 12, 259, 409, 96,
+ 255, 263, 413, 619, 255, 352, 353, 354, 355, 356,
+ 357, 36, 37, 228, 255, 31, 255, 364, 295, 366,
+ 77, 283, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 42, 649, 3, 4, 5, 6, 15, 48,
+ 255, 10, 11, 228, 13, 232, 99, 100, 17, 102,
+ 103, 46, 109, 110, 111, 112, 33, 184, 122, 246,
+ 122, 118, 120, 207, 124, 34, 122, 112, 113, 114,
+ 255, 129, 124, 14, 115, 228, 115, 125, 126, 146,
+ 105, 146, 115, 128, 109, 35, 37, 112, 29, 146,
+ 370, 32, 120, 118, 191, 112, 113, 114, 445, 120,
+ 35, 254, 255, 124, 38, 39, 386, 41, 129, 124,
+ 127, 35, 46, 375, 376, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 386, 182, 477, 478, 50, 116,
+ 117, 386, 189, 200, 191, 386, 105, 488, 361, 362,
+ 109, 35, 365, 37, 120, 99, 243, 101, 98, 99,
+ 100, 46, 102, 103, 104, 46, 47, 48, 49, 35,
+ 422, 46, 424, 54, 46, 262, 38, 39, 40, 41,
+ 35, 228, 56, 57, 58, 59, 60, 61, 107, 108,
+ 277, 160, 161, 162, 638, 639, 243, 228, 465, 46,
+ 122, 646, 46, 455, 456, 457, 115, 254, 255, 35,
+ 122, 124, 35, 260, 122, 125, 121, 124, 124, 123,
+ 277, 122, 277, 310, 255, 121, 283, 370, 283, 126,
+ 277, 122, 122, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 386, 48, 49, 50, 51, 52, 53,
+ 120, 120, 120, 46, 46, 35, 123, 35, 123, 123,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 316,
+ 387, 48, 49, 50, 51, 52, 53, 324, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, -1, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
- -1, -1, 130, -1, 132, 133, 134, 135, 136, 137,
+ 68, 69, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 123, 35, 421, 50, 51, 52, 53, 426,
+ 46, 48, 46, 8, 49, 121, 121, 106, 496, 121,
+ 110, 122, 369, 370, 35, 35, 120, 35, 35, 35,
+ 35, 386, 120, 35, 603, 35, 35, 35, 129, 386,
+ 592, 593, 594, 460, 123, 35, 111, 35, 35, 20,
+ 30, 21, 130, 35, 132, 133, 134, 135, 136, 137,
138, 139, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 120, -1, -1, 123, -1, -1, -1, -1, -1,
- 129, -1, -1, -1, -1, -1, -1, -1, 123, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, -1,
- 48, 49, 50, 51, 52, 53, 54, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, -1, 48, 49,
- 50, 51, 52, 53, 54, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, -1, 48, 49, 50, 51,
- 52, 53, 54, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, -1, 48, 49, 50, 51, 52, 53,
- 54, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, -1, 48, 49, 50, 51, 52, 53, 54, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, -1,
- 48, 49, 50, 51, 52, 53, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, -1, 48, 49, 50,
- 51, 52, 53, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, -1, 48, 49, 50, 51, 52, 53,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, -1,
+ 45, 46, 35, 35, 491, 50, 493, 520, 521, 522,
+ 35, 123, 429, 430, 431, 432, 433, 434, 435, 55,
+ 121, 45, 479, 122, 646, 123, 483, 444, 123, 446,
+ 447, 448, 98, 490, 55, 121, 23, 122, 45, 25,
+ 45, 458, 459, 45, 461, 45, 45, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 483, 45, 483, 607,
+ 50, 51, 52, 53, 45, 45, 483, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 35, 120, 35, 35, 35, 506,
+ 35, 122, 35, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 520, 521, 522, 50, 51, 52, 53,
+ 35, 598, 122, 35, 122, 121, 15, 27, 35, 35,
+ 537, 538, 539, 540, 541, 542, 543, 544, 545, 182,
+ 547, 644, 1, 115, 176, 235, 255, 52, 7, 277,
+ 9, 10, 11, 12, 506, 189, 603, 16, 17, 18,
+ 19, 180, 146, 22, 649, 24, 483, 26, 415, 28,
+ 130, 131, 132, 521, 33, 654, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 425, 253,
+ 511, 50, 51, 52, 53, 509, 603, 35, 407, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 411, 247, 30,
+ 33, 638, 639, 638, 639, -1, -1, -1, -1, -1,
+ -1, 638, 639, 1, -1, -1, -1, 644, -1, -1,
+ -1, 9, 10, 11, 12, -1, -1, 654, 16, 17,
+ 18, 19, -1, 112, 22, -1, 24, -1, 26, -1,
+ 28, 120, -1, -1, -1, 33, -1, 35, -1, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 35,
+ -1, -1, 50, 51, 52, 53, 124, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 36, -1, 112, -1, -1, -1, -1, -1,
+ -1, -1, 120, -1, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
+ -1, -1, -1, -1, 124, -1, -1, -1, -1, 130,
+ -1, 132, 133, 134, 135, 136, 137, 138, 139, -1,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 120, -1, -1, 123, 124, -1,
+ -1, -1, -1, 129, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, -1, -1, -1, -1,
+ -1, -1, -1, -1, 120, -1, -1, 123, 124, -1,
+ -1, -1, -1, 129, -1, -1, -1, -1, 120, -1,
+ -1, 123, -1, -1, -1, -1, -1, 129, -1, -1,
+ -1, -1, -1, -1, -1, 123, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
-1, 48, 49, 50, 51, 52, 53, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, -1, -1, 48, 49,
+ 40, 41, 42, 43, 44, 45, 46, -1, 48, 49,
50, 51, 52, 53, 37, 38, 39, 40, 41, 42,
43, 44, 45, -1, -1, 48, 49, 50, 51, 52,
53, 37, 38, 39, 40, 41, 42, 43, 44, 45,
-1, -1, 48, 49, 50, 51, 52, 53, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, -1, -1,
- -1, 50, 51, 52, 53, 37, 38, 39, 40, 41,
+ 39, 40, 41, 42, 43, 44, 45, -1, -1, 48,
+ 49, 50, 51, 52, 53, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, -1, -1, -1, 50, -1,
52, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, -1, -1, -1, 50, 37, 38, 39, 40, 41,
+ -1, -1, -1, -1, 50, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, 37, 38, 39, 40, 41,
42, 43, 44, 45
};
@@ -1716,72 +1724,73 @@
symbol of state STATE-NUM. */
static const yytype_uint16 yystos[] =
{
- 0, 116, 117, 141, 35, 143, 297, 298, 142, 143,
+ 0, 116, 117, 141, 35, 143, 298, 299, 142, 143,
0, 9, 10, 11, 13, 36, 37, 105, 109, 112,
118, 146, 147, 148, 149, 160, 164, 190, 205, 231,
- 299, 300, 301, 303, 304, 305, 3, 4, 5, 6,
+ 300, 301, 302, 304, 305, 306, 3, 4, 5, 6,
17, 34, 144, 145, 146, 159, 160, 161, 162, 163,
164, 168, 170, 282, 46, 48, 46, 124, 35, 198,
- 302, 305, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 292, 293, 37, 120, 191, 35, 120, 35, 35,
- 46, 48, 49, 50, 51, 52, 53, 54, 124, 207,
- 208, 210, 211, 212, 213, 250, 286, 291, 292, 300,
- 302, 172, 46, 46, 46, 46, 171, 292, 38, 39,
- 41, 46, 284, 46, 35, 143, 172, 122, 46, 165,
- 166, 167, 115, 112, 113, 114, 127, 192, 193, 194,
- 195, 35, 150, 151, 152, 292, 50, 214, 285, 286,
- 289, 290, 291, 292, 35, 122, 213, 36, 84, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 173, 123, 292, 292, 292, 292, 122, 145,
- 35, 50, 250, 292, 125, 126, 191, 196, 121, 122,
- 121, 122, 125, 126, 210, 120, 278, 279, 120, 278,
- 120, 174, 279, 279, 279, 46, 123, 123, 123, 123,
- 46, 178, 179, 35, 167, 35, 112, 113, 114, 128,
- 197, 194, 35, 152, 285, 46, 171, 46, 175, 176,
- 177, 213, 292, 48, 49, 46, 286, 186, 8, 180,
- 191, 107, 108, 153, 154, 155, 156, 157, 158, 121,
- 121, 121, 122, 1, 7, 12, 16, 18, 19, 22,
- 24, 26, 28, 33, 36, 37, 42, 43, 44, 45,
- 46, 50, 120, 160, 169, 187, 188, 189, 190, 198,
- 199, 200, 201, 202, 203, 204, 205, 215, 216, 218,
- 220, 221, 224, 226, 227, 231, 232, 233, 234, 243,
- 244, 245, 246, 247, 248, 250, 251, 257, 258, 259,
- 260, 268, 269, 280, 281, 282, 283, 289, 292, 293,
- 38, 39, 40, 41, 181, 288, 288, 110, 106, 155,
- 35, 177, 35, 288, 284, 120, 261, 261, 35, 35,
- 35, 251, 245, 188, 289, 292, 213, 46, 252, 253,
- 254, 289, 35, 35, 206, 207, 209, 213, 35, 35,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 48, 49, 222, 286, 289, 291, 35, 261, 129, 123,
- 35, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 123, 296, 213, 182, 292,
- 111, 228, 229, 292, 46, 262, 263, 264, 265, 266,
- 267, 285, 35, 35, 20, 270, 271, 272, 21, 273,
- 274, 275, 30, 235, 236, 237, 35, 35, 35, 35,
- 123, 55, 121, 122, 255, 123, 45, 122, 225, 225,
- 225, 225, 225, 225, 225, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 50, 122, 45, 122, 56, 57,
- 58, 59, 60, 61, 287, 287, 287, 45, 225, 287,
- 225, 46, 50, 52, 249, 292, 245, 48, 49, 289,
- 48, 49, 289, 37, 46, 48, 49, 50, 130, 131,
- 132, 205, 217, 219, 245, 289, 291, 293, 294, 285,
- 123, 35, 98, 99, 100, 102, 103, 104, 183, 184,
- 185, 256, 35, 122, 98, 230, 55, 121, 122, 276,
- 266, 23, 272, 266, 25, 275, 266, 14, 29, 32,
- 238, 237, 285, 289, 254, 256, 285, 292, 292, 292,
- 292, 292, 292, 292, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 292, 225, 292, 292, 292, 46, 48,
- 49, 223, 289, 46, 48, 49, 289, 46, 48, 49,
- 289, 292, 292, 285, 292, 261, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 130, 132, 133, 134, 135, 136, 137, 138, 139, 295,
- 295, 295, 213, 211, 213, 295, 213, 285, 285, 278,
- 120, 229, 267, 264, 99, 101, 277, 35, 35, 35,
- 35, 35, 250, 248, 250, 250, 35, 292, 292, 292,
- 292, 292, 292, 292, 292, 292, 292, 46, 289, 48,
- 49, 289, 48, 49, 289, 122, 122, 285, 177, 278,
- 35, 122, 239, 31, 227, 240, 241, 242, 208, 208,
- 121, 15, 250, 254, 27, 242, 249, 35, 35
+ 303, 306, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 293, 294, 37, 120, 191, 35, 120, 35, 35,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 124,
+ 207, 208, 210, 211, 212, 213, 250, 286, 292, 293,
+ 301, 303, 172, 46, 46, 46, 46, 171, 293, 38,
+ 39, 41, 46, 284, 46, 35, 143, 172, 122, 46,
+ 165, 166, 167, 115, 112, 113, 114, 127, 192, 193,
+ 194, 195, 35, 150, 151, 152, 293, 50, 214, 285,
+ 286, 290, 291, 292, 293, 35, 122, 213, 36, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 173, 123, 293, 293, 293, 293, 122,
+ 145, 35, 50, 250, 293, 125, 126, 191, 196, 121,
+ 122, 121, 122, 125, 126, 210, 120, 278, 279, 120,
+ 278, 120, 174, 279, 279, 279, 46, 123, 123, 123,
+ 123, 46, 178, 179, 35, 167, 35, 112, 113, 114,
+ 128, 197, 194, 35, 152, 285, 46, 171, 46, 175,
+ 176, 177, 213, 293, 48, 49, 46, 286, 186, 8,
+ 180, 191, 107, 108, 153, 154, 155, 156, 157, 158,
+ 121, 121, 121, 122, 1, 7, 12, 16, 18, 19,
+ 22, 24, 26, 28, 33, 36, 37, 42, 43, 44,
+ 45, 46, 50, 120, 160, 169, 187, 188, 189, 190,
+ 198, 199, 200, 201, 202, 203, 204, 205, 215, 216,
+ 218, 220, 221, 224, 226, 227, 231, 232, 233, 234,
+ 243, 244, 245, 246, 247, 248, 250, 251, 257, 258,
+ 259, 260, 268, 269, 280, 281, 282, 283, 290, 293,
+ 294, 38, 39, 40, 41, 181, 289, 289, 110, 106,
+ 155, 35, 177, 35, 289, 284, 120, 261, 261, 35,
+ 35, 35, 251, 245, 188, 290, 293, 213, 46, 252,
+ 253, 254, 290, 35, 35, 206, 207, 209, 213, 35,
+ 35, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 48, 49, 222, 286, 290, 292, 35, 261, 129,
+ 123, 35, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 123, 297, 213, 182,
+ 293, 111, 228, 229, 293, 46, 262, 263, 264, 265,
+ 266, 267, 285, 35, 35, 20, 270, 271, 272, 21,
+ 273, 274, 275, 30, 235, 236, 237, 35, 35, 35,
+ 35, 123, 55, 121, 122, 255, 123, 45, 122, 225,
+ 225, 225, 225, 225, 225, 225, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 50, 122, 45, 122, 56,
+ 57, 58, 59, 60, 61, 288, 288, 288, 45, 225,
+ 288, 225, 46, 50, 52, 249, 293, 245, 48, 49,
+ 290, 48, 49, 290, 37, 46, 47, 48, 49, 50,
+ 130, 131, 132, 205, 217, 219, 245, 287, 290, 292,
+ 294, 295, 285, 123, 35, 98, 99, 100, 102, 103,
+ 104, 183, 184, 185, 256, 35, 122, 98, 230, 55,
+ 121, 122, 276, 266, 23, 272, 266, 25, 275, 266,
+ 14, 29, 32, 238, 237, 285, 290, 254, 256, 285,
+ 293, 293, 293, 293, 293, 293, 293, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 293, 225, 293, 293,
+ 293, 46, 48, 49, 223, 290, 46, 48, 49, 290,
+ 46, 48, 49, 290, 293, 293, 285, 293, 261, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 130, 132, 133, 134, 135, 136, 137,
+ 138, 139, 296, 296, 296, 213, 211, 213, 296, 213,
+ 285, 285, 278, 120, 229, 267, 264, 99, 101, 277,
+ 35, 35, 35, 35, 35, 250, 248, 250, 250, 35,
+ 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
+ 46, 290, 48, 49, 290, 48, 49, 290, 122, 122,
+ 285, 177, 278, 35, 122, 239, 31, 227, 240, 241,
+ 242, 208, 208, 121, 15, 250, 254, 27, 242, 249,
+ 35, 35
};
#define yyerrok (yyerrstatus = 0)
@@ -2609,22 +2618,22 @@
switch (yyn)
{
case 4:
-#line 560 "pir.y"
+#line 563 "pir.y"
{ fixup_global_labels(lexer); ;}
break;
case 20:
-#line 591 "pir.y"
+#line 594 "pir.y"
{ new_macro_const(lexer->macros, (yyvsp[(2) - (3)].sval), (yyvsp[(3) - (3)].sval), yypirget_lineno(yyscanner)); ;}
break;
case 21:
-#line 597 "pir.y"
+#line 600 "pir.y"
{ /* fprintf(stderr, "macro body: [%s]\n", CURRENT_MACRO(lexer)->body);*/ ;}
break;
case 22:
-#line 601 "pir.y"
+#line 604 "pir.y"
{
new_macro(lexer->macros, (yyvsp[(2) - (2)].sval), yypirget_lineno(yyscanner), TRUE,
lexer->macro_size);
@@ -2632,17 +2641,17 @@
break;
case 27:
-#line 616 "pir.y"
+#line 619 "pir.y"
{ add_macro_param(CURRENT_MACRO(lexer), (yyvsp[(1) - (1)].sval)); ;}
break;
case 35:
-#line 635 "pir.y"
+#line 638 "pir.y"
{ store_macro_string(CURRENT_MACRO(lexer), "%s\n", (yyvsp[(2) - (2)].sval)); ;}
break;
case 36:
-#line 639 "pir.y"
+#line 642 "pir.y"
{
store_macro_string(CURRENT_MACRO(lexer), ".local %s %s\n",
pir_type_names[(yyvsp[(2) - (3)].ival)], (yyvsp[(3) - (3)].sval));
@@ -2650,152 +2659,152 @@
break;
case 37:
-#line 650 "pir.y"
+#line 653 "pir.y"
{ load_library(lexer, (yyvsp[(2) - (2)].sval)); ;}
break;
case 38:
-#line 654 "pir.y"
+#line 657 "pir.y"
{ yypirset_lineno ((yyvsp[(2) - (2)].ival), yyscanner); ;}
break;
case 39:
-#line 656 "pir.y"
+#line 659 "pir.y"
{ lexer->filename = (yyvsp[(2) - (2)].sval); ;}
break;
case 40:
-#line 660 "pir.y"
+#line 663 "pir.y"
{ annotate(lexer, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
break;
case 41:
-#line 666 "pir.y"
+#line 669 "pir.y"
{ set_hll(lexer, (yyvsp[(2) - (2)].sval)); ;}
break;
case 42:
-#line 670 "pir.y"
+#line 673 "pir.y"
{ set_hll_map(lexer, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
break;
case 43:
-#line 674 "pir.y"
+#line 677 "pir.y"
{ set_namespace(lexer, (yyvsp[(3) - (4)].key)); ;}
break;
case 44:
-#line 678 "pir.y"
+#line 681 "pir.y"
{ (yyval.key) = NULL; ;}
break;
case 45:
-#line 680 "pir.y"
+#line 683 "pir.y"
{ (yyval.key) = (yyvsp[(1) - (1)].key); ;}
break;
case 46:
-#line 684 "pir.y"
+#line 687 "pir.y"
{ (yyval.key) = new_key(lexer, (yyvsp[(1) - (1)].expr)); ;}
break;
case 47:
-#line 686 "pir.y"
+#line 689 "pir.y"
{ (yyval.key) = add_key(lexer, (yyvsp[(1) - (3)].key), (yyvsp[(3) - (3)].expr)); ;}
break;
case 48:
-#line 690 "pir.y"
+#line 693 "pir.y"
{ (yyval.expr) = expr_from_string(lexer, (yyvsp[(1) - (1)].sval)); ;}
break;
case 50:
-#line 700 "pir.y"
+#line 703 "pir.y"
{ close_sub(lexer); ;}
break;
case 51:
-#line 704 "pir.y"
+#line 707 "pir.y"
{ new_subr(lexer, (yyvsp[(2) - (2)].sval)); ;}
break;
case 56:
-#line 716 "pir.y"
+#line 719 "pir.y"
{ set_sub_flag(lexer, PIRC_SUB_FLAG_ANON);;}
break;
case 57:
-#line 718 "pir.y"
+#line 721 "pir.y"
{ set_sub_flag(lexer, PIRC_SUB_FLAG_INIT); ;}
break;
case 58:
-#line 720 "pir.y"
+#line 723 "pir.y"
{ set_sub_flag(lexer, PIRC_SUB_FLAG_LOAD); ;}
break;
case 59:
-#line 722 "pir.y"
+#line 725 "pir.y"
{ set_sub_flag(lexer, PIRC_SUB_FLAG_MAIN); ;}
break;
case 60:
-#line 724 "pir.y"
+#line 727 "pir.y"
{ set_sub_flag(lexer, PIRC_SUB_FLAG_LEX); ;}
break;
case 61:
-#line 726 "pir.y"
+#line 729 "pir.y"
{ set_sub_flag(lexer, PIRC_SUB_FLAG_POSTCOMP); ;}
break;
case 62:
-#line 728 "pir.y"
+#line 731 "pir.y"
{ set_sub_flag(lexer, PIRC_SUB_FLAG_IMMEDIATE); ;}
break;
case 63:
-#line 730 "pir.y"
+#line 733 "pir.y"
{ set_sub_flag(lexer, PIRC_SUB_FLAG_MULTI); ;}
break;
case 64:
-#line 732 "pir.y"
+#line 735 "pir.y"
{ set_sub_outer(lexer, (yyvsp[(3) - (4)].sval)); ;}
break;
case 65:
-#line 734 "pir.y"
+#line 737 "pir.y"
{ set_sub_methodname(lexer, (yyvsp[(2) - (2)].sval)); ;}
break;
case 66:
-#line 736 "pir.y"
+#line 739 "pir.y"
{ set_sub_vtable(lexer, (yyvsp[(2) - (2)].sval)); ;}
break;
case 67:
-#line 738 "pir.y"
+#line 741 "pir.y"
{ set_sub_subid(lexer, (yyvsp[(2) - (2)].sval)); ;}
break;
case 68:
-#line 740 "pir.y"
+#line 743 "pir.y"
{ set_sub_instanceof(lexer, (yyvsp[(2) - (2)].sval)); ;}
break;
case 69:
-#line 742 "pir.y"
+#line 745 "pir.y"
{ set_sub_nsentry(lexer, (yyvsp[(2) - (2)].sval)); ;}
break;
case 70:
-#line 746 "pir.y"
+#line 749 "pir.y"
{ set_sub_multi_types(lexer, (yyvsp[(2) - (3)].expr)); ;}
break;
case 71:
-#line 750 "pir.y"
+#line 753 "pir.y"
{
CURRENT_SUB(lexer)->info.num_multi_types = 1;
/* n=1 means :multi() -- without any types. */
@@ -2803,12 +2812,12 @@
break;
case 72:
-#line 755 "pir.y"
+#line 758 "pir.y"
{ (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
break;
case 73:
-#line 759 "pir.y"
+#line 762 "pir.y"
{
CURRENT_SUB(lexer)->info.num_multi_types = 2;
/* start counting multi types; always 1 higher than actual number
@@ -2820,7 +2829,7 @@
break;
case 74:
-#line 768 "pir.y"
+#line 771 "pir.y"
{
++CURRENT_SUB(lexer)->info.num_multi_types;
/* link the multi types in reverse other. That's fine,
@@ -2832,22 +2841,22 @@
break;
case 75:
-#line 779 "pir.y"
+#line 782 "pir.y"
{ (yyval.expr) = expr_from_ident(lexer, (yyvsp[(1) - (1)].sval)); ;}
break;
case 76:
-#line 781 "pir.y"
+#line 784 "pir.y"
{ (yyval.expr) = expr_from_string(lexer, (yyvsp[(1) - (1)].sval)); ;}
break;
case 77:
-#line 783 "pir.y"
+#line 786 "pir.y"
{ (yyval.expr) = expr_from_key(lexer, (yyvsp[(1) - (1)].key)); ;}
break;
case 78:
-#line 787 "pir.y"
+#line 790 "pir.y"
{
/* if there are parameters, then emit a get_params instruction. */
if ((yyvsp[(1) - (1)].uval) > 0)
@@ -2856,12 +2865,12 @@
break;
case 79:
-#line 795 "pir.y"
+#line 798 "pir.y"
{ (yyval.uval) = 0; ;}
break;
case 80:
-#line 797 "pir.y"
+#line 800 "pir.y"
{
/* if the :named flag was set, there's an extra
* constant string argument for the name. count that too.
@@ -2875,27 +2884,27 @@
break;
case 81:
-#line 810 "pir.y"
+#line 813 "pir.y"
{ (yyval.targ) = set_param_flag(lexer, (yyvsp[(2) - (4)].targ), (yyvsp[(3) - (4)].ival)); ;}
break;
case 82:
-#line 814 "pir.y"
+#line 817 "pir.y"
{ (yyval.targ) = add_param(lexer, (yyvsp[(1) - (2)].ival), (yyvsp[(2) - (2)].sval)); ;}
break;
case 83:
-#line 818 "pir.y"
+#line 821 "pir.y"
{ (yyval.ival) = 0; ;}
break;
case 84:
-#line 820 "pir.y"
+#line 823 "pir.y"
{ SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
break;
case 88:
-#line 829 "pir.y"
+#line 832 "pir.y"
{ (yyval.ival) = TARGET_FLAG_INVOCANT;
/* XXX handle multi_type */
@@ -2903,12 +2912,12 @@
break;
case 89:
-#line 836 "pir.y"
+#line 839 "pir.y"
{ (yyval.ival) = TARGET_FLAG_UNIQUE_REG; ;}
break;
case 91:
-#line 843 "pir.y"
+#line 846 "pir.y"
{
++lexer->stmt_counter;
/* increment the logical statement counter; a statement can be
@@ -2919,37 +2928,37 @@
break;
case 92:
-#line 853 "pir.y"
+#line 856 "pir.y"
{ set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
break;
case 110:
-#line 881 "pir.y"
+#line 884 "pir.y"
{ (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (3)].mval), (yyvsp[(2) - (3)].pval)); ;}
break;
case 111:
-#line 885 "pir.y"
+#line 888 "pir.y"
{ (yyval.pval) = NULL; ;}
break;
case 112:
-#line 887 "pir.y"
+#line 890 "pir.y"
{ (yyval.pval) = (yyvsp[(2) - (3)].pval); ;}
break;
case 113:
-#line 891 "pir.y"
+#line 894 "pir.y"
{ (yyval.pval) = NULL; ;}
break;
case 115:
-#line 896 "pir.y"
+#line 899 "pir.y"
{ (yyval.pval) = new_macro_param((yyvsp[(1) - (1)].sval)); ;}
break;
case 116:
-#line 898 "pir.y"
+#line 901 "pir.y"
{
macro_param *param = new_macro_param((yyvsp[(3) - (3)].sval));
param->next = (yyvsp[(1) - (3)].pval);
@@ -2958,7 +2967,7 @@
break;
case 117:
-#line 906 "pir.y"
+#line 909 "pir.y"
{
symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
if (sym == NULL) {
@@ -2969,22 +2978,22 @@
break;
case 119:
-#line 915 "pir.y"
+#line 918 "pir.y"
{ (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (2)].mval), (yyvsp[(2) - (2)].pval)); ;}
break;
case 121:
-#line 920 "pir.y"
+#line 923 "pir.y"
{ (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
break;
case 122:
-#line 925 "pir.y"
+#line 928 "pir.y"
{ (yyval.sval) = ""; ;}
break;
case 123:
-#line 927 "pir.y"
+#line 930 "pir.y"
{ /* XXX cleanup memory stuff */
char *newbuff = (char *)mem_sys_allocate((strlen((yyvsp[(1) - (2)].sval)) + strlen((yyvsp[(2) - (2)].sval)) + 2)
* sizeof (char));
@@ -2994,17 +3003,17 @@
break;
case 127:
-#line 939 "pir.y"
+#line 942 "pir.y"
{ (yyval.sval) = expand_macro(yyscanner, (yyvsp[(1) - (2)].mval), (yyvsp[(2) - (2)].pval)); ;}
break;
case 128:
-#line 947 "pir.y"
+#line 950 "pir.y"
{ set_instr(lexer, NULL); ;}
break;
case 130:
-#line 955 "pir.y"
+#line 958 "pir.y"
{
if (lexer->parse_errors > MAX_NUM_ERRORS)
panic(lexer, "Too many errors. Compilation aborted.\n");
@@ -3014,7 +3023,7 @@
break;
case 131:
-#line 964 "pir.y"
+#line 967 "pir.y"
{
set_instrf(lexer, "null", "%T", (yyvsp[(2) - (3)].targ));
get_opinfo(yyscanner);
@@ -3022,7 +3031,7 @@
break;
case 132:
-#line 971 "pir.y"
+#line 974 "pir.y"
{
set_instrf(lexer, "get_results", "%T", (yyvsp[(2) - (3)].targ));
get_opinfo(yyscanner);
@@ -3030,7 +3039,7 @@
break;
case 136:
-#line 985 "pir.y"
+#line 988 "pir.y"
{ /* at this point, TK_IDENT may in fact be a symbol identifier,
* not an op, so don't do any checks like is_parrot_op() just yet.
*/
@@ -3040,7 +3049,7 @@
break;
case 137:
-#line 994 "pir.y"
+#line 997 "pir.y"
{ /* when this rule is activated, the initial identifier must
* be a parrot op.
*/
@@ -3050,7 +3059,7 @@
break;
case 143:
-#line 1012 "pir.y"
+#line 1015 "pir.y"
{
/* the "instruction" that was set now appears to be
* an identifier; get the name, and check its type.
@@ -3087,22 +3096,22 @@
break;
case 144:
-#line 1048 "pir.y"
+#line 1051 "pir.y"
{ push_operand(lexer, (yyvsp[(1) - (1)].expr)); ;}
break;
case 145:
-#line 1050 "pir.y"
+#line 1053 "pir.y"
{ push_operand(lexer, expr_from_key(lexer, (yyvsp[(1) - (1)].key))); ;}
break;
case 146:
-#line 1054 "pir.y"
+#line 1057 "pir.y"
{ (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
break;
case 147:
-#line 1056 "pir.y"
+#line 1059 "pir.y"
{ /* this is either a LABEL or a symbol; in the latter case, the type
* will be filled in later. */
(yyval.expr) = expr_from_ident(lexer, (yyvsp[(1) - (1)].sval));
@@ -3110,17 +3119,17 @@
break;
case 148:
-#line 1061 "pir.y"
+#line 1064 "pir.y"
{ (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
break;
case 149:
-#line 1063 "pir.y"
+#line 1066 "pir.y"
{ (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
break;
case 150:
-#line 1067 "pir.y"
+#line 1070 "pir.y"
{
/* if $1 is a register, just return that */
if (TEST_FLAG((yyvsp[(1) - (2)].targ)->flags, TARGET_FLAG_IS_REG))
@@ -3144,22 +3153,22 @@
break;
case 151:
-#line 1090 "pir.y"
+#line 1093 "pir.y"
{ (yyval.key) = (yyvsp[(2) - (3)].key); ;}
break;
case 152:
-#line 1094 "pir.y"
+#line 1097 "pir.y"
{ (yyval.key) = new_key(lexer, (yyvsp[(1) - (1)].expr)); ;}
break;
case 153:
-#line 1096 "pir.y"
+#line 1099 "pir.y"
{ (yyval.key) = add_key(lexer, (yyvsp[(1) - (3)].key), (yyvsp[(3) - (3)].expr)); ;}
break;
case 154:
-#line 1105 "pir.y"
+#line 1108 "pir.y"
{
/* the instruction is already set in parrot_op rule */
unshift_operand(lexer, (yyvsp[(4) - (6)].expr));
@@ -3173,7 +3182,7 @@
break;
case 155:
-#line 1116 "pir.y"
+#line 1119 "pir.y"
{
/* the instruction is already set in parrot_op rule */
unshift_operand(lexer, (yyvsp[(4) - (4)].expr));
@@ -3188,7 +3197,7 @@
break;
case 156:
-#line 1128 "pir.y"
+#line 1131 "pir.y"
{ /* XXX create a PMC const for $4 */
unshift_operand(lexer, expr_from_key(lexer, (yyvsp[(4) - (6)].key)));
unshift_operand(lexer, expr_from_target(lexer, (yyvsp[(1) - (6)].targ)));
@@ -3199,7 +3208,7 @@
break;
case 160:
-#line 1145 "pir.y"
+#line 1148 "pir.y"
{
if ((yyvsp[(3) - (3)].ival) == 0)
set_instrf(lexer, "null", "%T", (yyvsp[(1) - (3)].targ));
@@ -3211,7 +3220,7 @@
break;
case 161:
-#line 1154 "pir.y"
+#line 1157 "pir.y"
{
if ((yyvsp[(3) - (3)].dval) == 0.0)
set_instrf(lexer, "null", "%T", (yyvsp[(1) - (3)].targ));
@@ -3223,15 +3232,15 @@
break;
case 162:
-#line 1163 "pir.y"
+#line 1166 "pir.y"
{
- set_instrf(lexer, "set", "%T%s", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].sval));
+ set_instrf(lexer, "set", "%T%C", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].cval));
get_opinfo(yyscanner);
;}
break;
case 163:
-#line 1168 "pir.y"
+#line 1171 "pir.y"
{
set_instrf(lexer, "set", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
get_opinfo(yyscanner);
@@ -3239,7 +3248,7 @@
break;
case 164:
-#line 1173 "pir.y"
+#line 1176 "pir.y"
{
symbol *sym = find_symbol(lexer, (yyvsp[(3) - (3)].sval));
if (sym) {
@@ -3263,7 +3272,7 @@
break;
case 165:
-#line 1194 "pir.y"
+#line 1197 "pir.y"
{
unshift_operand(lexer, expr_from_target(lexer, (yyvsp[(1) - (3)].targ)));
get_opinfo(yyscanner);
@@ -3271,7 +3280,7 @@
break;
case 166:
-#line 1199 "pir.y"
+#line 1202 "pir.y"
{
/* $P0 = foo ["bar"]
*
@@ -3315,7 +3324,7 @@
break;
case 167:
-#line 1240 "pir.y"
+#line 1243 "pir.y"
{
symbol *sym = find_symbol(lexer, (yyvsp[(3) - (4)].sval));
target *t;
@@ -3336,7 +3345,7 @@
break;
case 168:
-#line 1258 "pir.y"
+#line 1261 "pir.y"
{
target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(3) - (4)].ival));
set_target_key(preg, (yyvsp[(4) - (4)].key));
@@ -3346,7 +3355,7 @@
break;
case 169:
-#line 1265 "pir.y"
+#line 1268 "pir.y"
{
set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%T%E", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].expr));
get_opinfo(yyscanner);
@@ -3354,7 +3363,7 @@
break;
case 170:
-#line 1270 "pir.y"
+#line 1273 "pir.y"
{
if ((yyvsp[(3) - (3)].ival) == 1)
set_instrf(lexer, "inc", "%T", (yyvsp[(1) - (3)].targ));
@@ -3368,7 +3377,7 @@
break;
case 171:
-#line 1281 "pir.y"
+#line 1284 "pir.y"
{
if ((yyvsp[(3) - (3)].dval) == 1.0)
set_instrf(lexer, "inc", "%T", (yyvsp[(1) - (3)].targ));
@@ -3382,7 +3391,7 @@
break;
case 172:
-#line 1292 "pir.y"
+#line 1295 "pir.y"
{
if ((yyvsp[(3) - (3)].ival) == 1)
set_instrf(lexer, "dec", "%T", (yyvsp[(1) - (3)].targ));
@@ -3396,7 +3405,7 @@
break;
case 173:
-#line 1303 "pir.y"
+#line 1306 "pir.y"
{
if ((yyvsp[(3) - (3)].dval) == 1.0)
set_instrf(lexer, "dec", "%T", (yyvsp[(1) - (3)].targ));
@@ -3410,7 +3419,7 @@
break;
case 174:
-#line 1314 "pir.y"
+#line 1317 "pir.y"
{
set_instrf(lexer, "add", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
get_opinfo(yyscanner);
@@ -3418,7 +3427,7 @@
break;
case 175:
-#line 1319 "pir.y"
+#line 1322 "pir.y"
{
set_instrf(lexer, "sub", "%T%T", (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ));
get_opinfo(yyscanner);
@@ -3426,7 +3435,7 @@
break;
case 176:
-#line 1324 "pir.y"
+#line 1327 "pir.y"
{
set_instrf(lexer, (yyvsp[(3) - (4)].sval), "%T%E", (yyvsp[(1) - (4)].targ), (yyvsp[(4) - (4)].expr));
get_opinfo(yyscanner);
@@ -3434,7 +3443,7 @@
break;
case 177:
-#line 1329 "pir.y"
+#line 1332 "pir.y"
{
if (targets_equal((yyvsp[(1) - (5)].targ), (yyvsp[(3) - (5)].targ))) /* $P0 = $P0 + $P1 ==> $P0 += $P1 */
set_instrf(lexer, opnames[(yyvsp[(4) - (5)].ival)], "%T%E", (yyvsp[(1) - (5)].targ), (yyvsp[(5) - (5)].expr));
@@ -3447,7 +3456,7 @@
break;
case 178:
-#line 1339 "pir.y"
+#line 1342 "pir.y"
{
symbol *sym = find_symbol(lexer, (yyvsp[(1) - (4)].sval));
target *t;
@@ -3469,7 +3478,7 @@
break;
case 179:
-#line 1358 "pir.y"
+#line 1361 "pir.y"
{
target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (4)].ival));
set_target_key(preg, (yyvsp[(2) - (4)].key));
@@ -3479,97 +3488,97 @@
break;
case 180:
-#line 1392 "pir.y"
+#line 1395 "pir.y"
{ set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%i%T", (yyvsp[(1) - (3)].ival), (yyvsp[(3) - (3)].targ)); ;}
break;
case 181:
-#line 1394 "pir.y"
+#line 1397 "pir.y"
{ set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%n%T", (yyvsp[(1) - (3)].dval), (yyvsp[(3) - (3)].targ)); ;}
break;
case 182:
-#line 1396 "pir.y"
+#line 1399 "pir.y"
{ set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%s%T", (yyvsp[(1) - (3)].sval), (yyvsp[(3) - (3)].targ)); ;}
break;
case 183:
-#line 1398 "pir.y"
+#line 1401 "pir.y"
{ set_instrf(lexer, "set", "%C", fold_s_s(yyscanner, (yyvsp[(1) - (3)].sval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].sval))); ;}
break;
case 184:
-#line 1400 "pir.y"
+#line 1403 "pir.y"
{ set_instrf(lexer, "set", "%C", fold_i_i(yyscanner, (yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival))); ;}
break;
case 185:
-#line 1402 "pir.y"
+#line 1405 "pir.y"
{ set_instrf(lexer, "set", "%C", fold_n_n(yyscanner, (yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval))); ;}
break;
case 186:
-#line 1404 "pir.y"
+#line 1407 "pir.y"
{ set_instrf(lexer, "set", "%C", fold_i_n(yyscanner, (yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval))); ;}
break;
case 187:
-#line 1406 "pir.y"
+#line 1409 "pir.y"
{ set_instrf(lexer, "set", "%C", fold_n_i(yyscanner, (yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival))); ;}
break;
case 188:
-#line 1411 "pir.y"
+#line 1414 "pir.y"
{ get_opinfo(yyscanner); ;}
break;
case 189:
-#line 1420 "pir.y"
+#line 1423 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, (yyvsp[(3) - (5)].sval), (yyvsp[(5) - (5)].sval)); ;}
break;
case 190:
-#line 1422 "pir.y"
+#line 1425 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "int", (yyvsp[(5) - (5)].sval)); ;}
break;
case 191:
-#line 1424 "pir.y"
+#line 1427 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "num", (yyvsp[(5) - (5)].sval)); ;}
break;
case 192:
-#line 1426 "pir.y"
+#line 1429 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "pmc", (yyvsp[(5) - (5)].sval)); ;}
break;
case 193:
-#line 1428 "pir.y"
+#line 1431 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "string", (yyvsp[(5) - (5)].sval)); ;}
break;
case 194:
-#line 1430 "pir.y"
+#line 1433 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "if", (yyvsp[(5) - (5)].sval)); ;}
break;
case 195:
-#line 1432 "pir.y"
+#line 1435 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "unless", (yyvsp[(5) - (5)].sval)); ;}
break;
case 196:
-#line 1434 "pir.y"
+#line 1437 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "goto", (yyvsp[(5) - (5)].sval)); ;}
break;
case 197:
-#line 1436 "pir.y"
+#line 1439 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "null", (yyvsp[(5) - (5)].sval)); ;}
break;
case 198:
-#line 1438 "pir.y"
+#line 1441 "pir.y"
{
int istrue = evaluate_c(lexer, (yyvsp[(2) - (4)].cval));
/* if "unless", invert the true-ness */
@@ -3584,7 +3593,7 @@
break;
case 199:
-#line 1450 "pir.y"
+#line 1453 "pir.y"
{
set_instrf(lexer, (yyvsp[(1) - (5)].ival) ? "unless_null" : "if_null", "%T%I",
new_reg(lexer, PMC_TYPE, (yyvsp[(3) - (5)].ival)), (yyvsp[(5) - (5)].sval));
@@ -3592,67 +3601,67 @@
break;
case 200:
-#line 1455 "pir.y"
+#line 1458 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
break;
case 201:
-#line 1457 "pir.y"
+#line 1460 "pir.y"
{ set_instrf(lexer, (yyvsp[(1) - (4)].ival) ? "unless" : "if", "%T%I", (yyvsp[(2) - (4)].targ), (yyvsp[(4) - (4)].sval)); ;}
break;
case 202:
-#line 1459 "pir.y"
+#line 1462 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "int", (yyvsp[(4) - (4)].sval)); ;}
break;
case 203:
-#line 1461 "pir.y"
+#line 1464 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "num", (yyvsp[(4) - (4)].sval)); ;}
break;
case 204:
-#line 1463 "pir.y"
+#line 1466 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "pmc", (yyvsp[(4) - (4)].sval)); ;}
break;
case 205:
-#line 1465 "pir.y"
+#line 1468 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "string", (yyvsp[(4) - (4)].sval)); ;}
break;
case 206:
-#line 1467 "pir.y"
+#line 1470 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "if", (yyvsp[(4) - (4)].sval)); ;}
break;
case 207:
-#line 1469 "pir.y"
+#line 1472 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "unless", (yyvsp[(4) - (4)].sval)); ;}
break;
case 208:
-#line 1471 "pir.y"
+#line 1474 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
break;
case 209:
-#line 1473 "pir.y"
+#line 1476 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
break;
case 210:
-#line 1475 "pir.y"
+#line 1478 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
break;
case 211:
-#line 1477 "pir.y"
+#line 1480 "pir.y"
{ create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
break;
case 212:
-#line 1479 "pir.y"
+#line 1482 "pir.y"
{
if ((yyvsp[(2) - (4)].ival) == COMPUTE_DURING_RUNTIME) {
if ((yyvsp[(1) - (4)].ival) == NEED_INVERT_OPNAME) /* "unless" */
@@ -3680,7 +3689,7 @@
break;
case 213:
-#line 1510 "pir.y"
+#line 1513 "pir.y"
{
/* the instructions "gt" and "ge" are converted to "lt" and "le".
* if so, then the arguments must be reversed as well. "lt" and
@@ -3709,7 +3718,7 @@
break;
case 214:
-#line 1536 "pir.y"
+#line 1539 "pir.y"
{
if (((yyvsp[(0) - (3)].ival) != NEED_INVERT_OPNAME) && ((yyvsp[(2) - (3)].ival) == OP_GE || (yyvsp[(2) - (3)].ival) == OP_GT))
set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival) + 1], "%T%i", (yyvsp[(3) - (3)].targ), (yyvsp[(1) - (3)].ival));
@@ -3720,7 +3729,7 @@
break;
case 215:
-#line 1544 "pir.y"
+#line 1547 "pir.y"
{
if (((yyvsp[(0) - (3)].ival) != NEED_INVERT_OPNAME) && ((yyvsp[(2) - (3)].ival) == OP_GE || (yyvsp[(2) - (3)].ival) == OP_GT))
set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival) + 1], "%T%n", (yyvsp[(3) - (3)].targ), (yyvsp[(1) - (3)].dval));
@@ -3732,7 +3741,7 @@
break;
case 216:
-#line 1553 "pir.y"
+#line 1556 "pir.y"
{
if (((yyvsp[(0) - (3)].ival) != NEED_INVERT_OPNAME) && ((yyvsp[(2) - (3)].ival) == OP_GE || (yyvsp[(2) - (3)].ival) == OP_GT))
set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%T%s", (yyvsp[(3) - (3)].targ), (yyvsp[(1) - (3)].sval));
@@ -3744,32 +3753,32 @@
break;
case 217:
-#line 1562 "pir.y"
+#line 1565 "pir.y"
{ (yyval.ival) = evaluate_i_i((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
break;
case 218:
-#line 1564 "pir.y"
+#line 1567 "pir.y"
{ (yyval.ival) = evaluate_i_n((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
break;
case 219:
-#line 1566 "pir.y"
+#line 1569 "pir.y"
{ (yyval.ival) = evaluate_n_i((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
break;
case 220:
-#line 1568 "pir.y"
+#line 1571 "pir.y"
{ (yyval.ival) = evaluate_n_n((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
break;
case 221:
-#line 1570 "pir.y"
+#line 1573 "pir.y"
{ (yyval.ival) = evaluate_s_s((yyvsp[(1) - (3)].sval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].sval)); ;}
break;
case 222:
-#line 1574 "pir.y"
+#line 1577 "pir.y"
{
yypirerror(yyscanner, lexer, "cannot compare string to %s",
(yyvsp[(3) - (3)].ival) == INT_TYPE ? "integer" : "number");
@@ -3777,37 +3786,37 @@
break;
case 223:
-#line 1579 "pir.y"
+#line 1582 "pir.y"
{ yypirerror(yyscanner, lexer, "cannot compare integer to string"); ;}
break;
case 224:
-#line 1581 "pir.y"
+#line 1584 "pir.y"
{ yypirerror(yyscanner, lexer, "cannot compare number to string"); ;}
break;
case 225:
-#line 1585 "pir.y"
+#line 1588 "pir.y"
{ (yyval.ival) = INT_TYPE; ;}
break;
case 226:
-#line 1586 "pir.y"
+#line 1589 "pir.y"
{ (yyval.ival) = NUM_TYPE; ;}
break;
case 227:
-#line 1589 "pir.y"
+#line 1592 "pir.y"
{ (yyval.ival) = DONT_INVERT_OPNAME; /* no need to invert */ ;}
break;
case 228:
-#line 1590 "pir.y"
+#line 1593 "pir.y"
{ (yyval.ival) = NEED_INVERT_OPNAME; /* yes, invert opname */ ;}
break;
case 231:
-#line 1598 "pir.y"
+#line 1601 "pir.y"
{
set_instrf(lexer, "branch", "%I", (yyvsp[(2) - (3)].sval));
set_op_labelflag(lexer, BIT(0)); /* bit 0 means: "1 << 0" */
@@ -3816,37 +3825,37 @@
break;
case 232:
-#line 1606 "pir.y"
+#line 1609 "pir.y"
{ declare_local(lexer, (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].symb)); ;}
break;
case 233:
-#line 1610 "pir.y"
+#line 1613 "pir.y"
{ (yyval.symb) = (yyvsp[(1) - (1)].symb); ;}
break;
case 234:
-#line 1612 "pir.y"
+#line 1615 "pir.y"
{ (yyval.symb) = add_local((yyvsp[(1) - (3)].symb), (yyvsp[(3) - (3)].symb)); ;}
break;
case 235:
-#line 1616 "pir.y"
+#line 1619 "pir.y"
{ (yyval.symb) = new_local(lexer, (yyvsp[(1) - (2)].sval), (yyvsp[(2) - (2)].ival)); ;}
break;
case 236:
-#line 1619 "pir.y"
+#line 1622 "pir.y"
{ (yyval.ival) = 0; ;}
break;
case 237:
-#line 1620 "pir.y"
+#line 1623 "pir.y"
{ (yyval.ival) = 1; ;}
break;
case 238:
-#line 1624 "pir.y"
+#line 1627 "pir.y"
{ /* if $4 is not a register, it must be a declared symbol */
if (!TEST_FLAG((yyvsp[(4) - (5)].targ)->flags, TARGET_FLAG_IS_REG)) {
@@ -3859,12 +3868,12 @@
break;
case 239:
-#line 1639 "pir.y"
+#line 1642 "pir.y"
{ convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
break;
case 242:
-#line 1651 "pir.y"
+#line 1654 "pir.y"
{ /* $4 contains an invocation object */
set_invocation_args(lexer, (yyvsp[(4) - (8)].invo), (yyvsp[(3) - (8)].argm));
(yyval.invo) = set_invocation_results(lexer, (yyvsp[(4) - (8)].invo), (yyvsp[(6) - (8)].targ));
@@ -3872,72 +3881,72 @@
break;
case 243:
-#line 1658 "pir.y"
+#line 1661 "pir.y"
{ (yyval.argm) = NULL; ;}
break;
case 244:
-#line 1660 "pir.y"
+#line 1663 "pir.y"
{ (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
break;
case 245:
-#line 1664 "pir.y"
+#line 1667 "pir.y"
{ (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
break;
case 246:
-#line 1666 "pir.y"
+#line 1669 "pir.y"
{ (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
break;
case 247:
-#line 1670 "pir.y"
+#line 1673 "pir.y"
{ (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
break;
case 248:
-#line 1674 "pir.y"
+#line 1677 "pir.y"
{ (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(2) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
break;
case 249:
-#line 1676 "pir.y"
+#line 1679 "pir.y"
{ (yyval.invo) = invoke(lexer, CALL_NCI, (yyvsp[(2) - (2)].targ)); ;}
break;
case 250:
-#line 1679 "pir.y"
+#line 1682 "pir.y"
{ (yyval.invo) = invoke(lexer, CALL_METHOD, (yyvsp[(2) - (5)].targ), (yyvsp[(5) - (5)].expr)); ;}
break;
case 251:
-#line 1683 "pir.y"
+#line 1686 "pir.y"
{ (yyval.targ) = NULL; ;}
break;
case 252:
-#line 1685 "pir.y"
+#line 1688 "pir.y"
{ (yyval.targ) = (yyvsp[(2) - (2)].targ); ;}
break;
case 253:
-#line 1689 "pir.y"
+#line 1692 "pir.y"
{ (yyval.targ) = NULL; ;}
break;
case 254:
-#line 1691 "pir.y"
+#line 1694 "pir.y"
{ (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
break;
case 255:
-#line 1695 "pir.y"
+#line 1698 "pir.y"
{ (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
break;
case 256:
-#line 1697 "pir.y"
+#line 1700 "pir.y"
{
if ((yyvsp[(2) - (2)].targ))
(yyval.targ) = add_target(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].targ));
@@ -3947,32 +3956,32 @@
break;
case 257:
-#line 1706 "pir.y"
+#line 1709 "pir.y"
{ (yyval.targ) = (yyvsp[(2) - (3)].targ); ;}
break;
case 258:
-#line 1708 "pir.y"
+#line 1711 "pir.y"
{ (yyval.targ) = NULL; ;}
break;
case 260:
-#line 1716 "pir.y"
+#line 1719 "pir.y"
{ (yyval.invo) = set_invocation_results(lexer, (yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ)); ;}
break;
case 261:
-#line 1718 "pir.y"
+#line 1721 "pir.y"
{ (yyval.invo) = set_invocation_results(lexer, (yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ)); ;}
break;
case 262:
-#line 1720 "pir.y"
+#line 1723 "pir.y"
{ (yyval.invo) = set_invocation_results(lexer, (yyvsp[(1) - (1)].invo), NULL); ;}
break;
case 265:
-#line 1728 "pir.y"
+#line 1731 "pir.y"
{
/* if $1 is not a register, check whether the symbol was declared */
if (!TEST_FLAG((yyvsp[(1) - (4)].targ)->flags, TARGET_FLAG_IS_REG)) {
@@ -3993,7 +4002,7 @@
break;
case 266:
-#line 1748 "pir.y"
+#line 1751 "pir.y"
{
(yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(1) - (2)].targ), NULL);
set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (2)].argm));
@@ -4001,12 +4010,12 @@
break;
case 267:
-#line 1755 "pir.y"
+#line 1758 "pir.y"
{ (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
break;
case 268:
-#line 1757 "pir.y"
+#line 1760 "pir.y"
{
symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
if (sym == NULL)
@@ -4017,7 +4026,7 @@
break;
case 269:
-#line 1767 "pir.y"
+#line 1770 "pir.y"
{ /* check that this identifier was declared */
symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
@@ -4037,22 +4046,22 @@
break;
case 270:
-#line 1784 "pir.y"
+#line 1787 "pir.y"
{ (yyval.expr) = expr_from_target(lexer, new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival))); ;}
break;
case 271:
-#line 1786 "pir.y"
+#line 1789 "pir.y"
{ (yyval.expr) = expr_from_target(lexer, new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival))); ;}
break;
case 272:
-#line 1788 "pir.y"
+#line 1791 "pir.y"
{ (yyval.expr) = expr_from_const(lexer, new_const(lexer, STRING_TYPE, (yyvsp[(1) - (1)].sval))); ;}
break;
case 273:
-#line 1792 "pir.y"
+#line 1795 "pir.y"
{
symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
if (sym == NULL)
@@ -4064,74 +4073,74 @@
break;
case 274:
-#line 1801 "pir.y"
+#line 1804 "pir.y"
{ (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival)); ;}
break;
case 275:
-#line 1806 "pir.y"
+#line 1809 "pir.y"
{
(yyval.targ) = (yyvsp[(2) - (3)].targ);
;}
break;
case 276:
-#line 1812 "pir.y"
+#line 1815 "pir.y"
{ (yyval.targ) = NULL; ;}
break;
case 277:
-#line 1814 "pir.y"
+#line 1817 "pir.y"
{ (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
break;
case 278:
-#line 1818 "pir.y"
+#line 1821 "pir.y"
{ (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
break;
case 279:
-#line 1820 "pir.y"
+#line 1823 "pir.y"
{ (yyval.targ) = add_target(lexer, (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
break;
case 280:
-#line 1824 "pir.y"
+#line 1827 "pir.y"
{ (yyval.targ) = set_param_flag(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].ival)); ;}
break;
case 281:
-#line 1826 "pir.y"
+#line 1829 "pir.y"
{ (yyval.targ) = set_param_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
break;
case 282:
-#line 1830 "pir.y"
+#line 1833 "pir.y"
{ (yyval.ival) = 0; ;}
break;
case 283:
-#line 1832 "pir.y"
+#line 1835 "pir.y"
{ SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
break;
case 284:
-#line 1836 "pir.y"
+#line 1839 "pir.y"
{ (yyval.ival) = TARGET_FLAG_OPTIONAL; ;}
break;
case 285:
-#line 1838 "pir.y"
+#line 1841 "pir.y"
{ (yyval.ival) = TARGET_FLAG_OPT_FLAG; ;}
break;
case 286:
-#line 1840 "pir.y"
+#line 1843 "pir.y"
{ (yyval.ival) = TARGET_FLAG_SLURPY; ;}
break;
case 287:
-#line 1842 "pir.y"
+#line 1845 "pir.y"
{
(yyval.ival) = TARGET_FLAG_NAMED;
set_param_alias(lexer, (yyvsp[(2) - (2)].sval));
@@ -4139,12 +4148,12 @@
break;
case 288:
-#line 1852 "pir.y"
+#line 1855 "pir.y"
{ convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
break;
case 293:
-#line 1862 "pir.y"
+#line 1865 "pir.y"
{
(yyval.invo) = invoke(lexer, CALL_RETURN);
set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (3)].argm));
@@ -4152,7 +4161,7 @@
break;
case 294:
-#line 1867 "pir.y"
+#line 1870 "pir.y"
{ /* was the invocation a method call? then it becomes a method tail
* call, otherwise it's just a normal (sub) tail call.
*/
@@ -4164,7 +4173,7 @@
break;
case 295:
-#line 1878 "pir.y"
+#line 1881 "pir.y"
{
(yyval.invo) = invoke(lexer, CALL_YIELD);
set_invocation_args(lexer, (yyval.invo), (yyvsp[(2) - (3)].argm));
@@ -4172,47 +4181,47 @@
break;
case 296:
-#line 1885 "pir.y"
+#line 1888 "pir.y"
{ (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
break;
case 297:
-#line 1889 "pir.y"
+#line 1892 "pir.y"
{ (yyval.argm) = NULL; ;}
break;
case 298:
-#line 1891 "pir.y"
+#line 1894 "pir.y"
{ (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
break;
case 299:
-#line 1895 "pir.y"
+#line 1898 "pir.y"
{ (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
break;
case 300:
-#line 1897 "pir.y"
+#line 1900 "pir.y"
{ (yyval.argm) = add_arg((yyvsp[(1) - (3)].argm), (yyvsp[(3) - (3)].argm)); ;}
break;
case 303:
-#line 1905 "pir.y"
+#line 1908 "pir.y"
{ (yyval.argm) = set_arg_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
break;
case 304:
-#line 1909 "pir.y"
+#line 1912 "pir.y"
{ (yyval.argm) = set_arg_flag((yyval.argm), (yyvsp[(2) - (2)].ival)); ;}
break;
case 305:
-#line 1913 "pir.y"
+#line 1916 "pir.y"
{ (yyval.argm) = set_curarg(lexer, new_argument(lexer, (yyvsp[(1) - (1)].expr))); ;}
break;
case 306:
-#line 1919 "pir.y"
+#line 1922 "pir.y"
{
(yyval.invo) = invoke(lexer, CALL_RETURN);
set_invocation_args(lexer, (yyval.invo), (yyvsp[(3) - (5)].argm));
@@ -4220,7 +4229,7 @@
break;
case 307:
-#line 1928 "pir.y"
+#line 1931 "pir.y"
{
(yyval.invo) = invoke(lexer, CALL_YIELD);
set_invocation_args(lexer, (yyval.invo), (yyvsp[(3) - (5)].argm));
@@ -4228,72 +4237,72 @@
break;
case 308:
-#line 1935 "pir.y"
+#line 1938 "pir.y"
{ (yyval.argm) = NULL; ;}
break;
case 309:
-#line 1937 "pir.y"
+#line 1940 "pir.y"
{ (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
break;
case 310:
-#line 1942 "pir.y"
+#line 1945 "pir.y"
{ (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
break;
case 311:
-#line 1944 "pir.y"
+#line 1947 "pir.y"
{ (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
break;
case 312:
-#line 1949 "pir.y"
+#line 1952 "pir.y"
{ (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
break;
case 313:
-#line 1953 "pir.y"
+#line 1956 "pir.y"
{ (yyval.argm) = NULL; ;}
break;
case 314:
-#line 1955 "pir.y"
+#line 1958 "pir.y"
{ (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
break;
case 315:
-#line 1959 "pir.y"
+#line 1962 "pir.y"
{ (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
break;
case 316:
-#line 1961 "pir.y"
+#line 1964 "pir.y"
{ (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
break;
case 317:
-#line 1965 "pir.y"
+#line 1968 "pir.y"
{ (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
break;
case 318:
-#line 1970 "pir.y"
+#line 1973 "pir.y"
{ (yyval.ival) = 0; ;}
break;
case 319:
-#line 1972 "pir.y"
+#line 1975 "pir.y"
{ SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
break;
case 320:
-#line 1976 "pir.y"
+#line 1979 "pir.y"
{ (yyval.ival) = ARG_FLAG_FLAT; ;}
break;
case 321:
-#line 1978 "pir.y"
+#line 1981 "pir.y"
{
(yyval.ival) = ARG_FLAG_NAMED;
set_arg_alias(lexer, (yyvsp[(2) - (2)].sval));
@@ -4301,137 +4310,152 @@
break;
case 322:
-#line 1985 "pir.y"
+#line 1988 "pir.y"
{ (yyval.sval) = NULL; ;}
break;
case 323:
-#line 1987 "pir.y"
+#line 1990 "pir.y"
{ (yyval.sval) = (yyvsp[(1) - (1)].sval); ;}
break;
case 324:
-#line 1991 "pir.y"
+#line 1994 "pir.y"
{ (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
break;
case 328:
-#line 2002 "pir.y"
+#line 2005 "pir.y"
{ store_global_constant(lexer, (yyvsp[(2) - (2)].cval)); ;}
break;
case 329:
-#line 2006 "pir.y"
+#line 2009 "pir.y"
{ /* XXX is .globalconst to be kept? */ ;}
break;
case 330:
-#line 2010 "pir.y"
- { (yyval.cval) = new_named_const(lexer, INT_TYPE, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].ival)); ;}
+#line 2013 "pir.y"
+ { (yyval.cval) = new_named_const(lexer, INT_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].ival)); ;}
break;
case 331:
-#line 2012 "pir.y"
- { (yyval.cval) = new_named_const(lexer, NUM_TYPE, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].dval)); ;}
+#line 2015 "pir.y"
+ { (yyval.cval) = new_named_const(lexer, NUM_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].dval)); ;}
break;
case 332:
-#line 2014 "pir.y"
- { (yyval.cval) = new_named_const(lexer, STRING_TYPE, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
+#line 2017 "pir.y"
+ { (yyval.cval) = new_named_const(lexer, STRING_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
break;
case 333:
-#line 2016 "pir.y"
+#line 2019 "pir.y"
{ (yyval.cval) = new_pmc_const((yyvsp[(1) - (4)].sval), (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].cval)); ;}
break;
case 334:
-#line 2023 "pir.y"
+#line 2026 "pir.y"
{ (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
break;
case 335:
-#line 2024 "pir.y"
+#line 2027 "pir.y"
{ (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
break;
case 336:
-#line 2028 "pir.y"
- { (yyval.cval) = new_const(lexer, STRING_TYPE, (yyvsp[(1) - (1)].sval)); ;}
+#line 2031 "pir.y"
+ { (yyval.cval) = new_const(lexer, STRING_VAL, (yyvsp[(1) - (1)].sval)); ;}
break;
case 337:
-#line 2029 "pir.y"
- { (yyval.cval) = new_const(lexer, INT_TYPE, (yyvsp[(1) - (1)].ival)); ;}
+#line 2032 "pir.y"
+ { (yyval.cval) = new_const(lexer, INT_VAL, (yyvsp[(1) - (1)].ival)); ;}
break;
case 338:
-#line 2030 "pir.y"
- { (yyval.cval) = new_const(lexer, NUM_TYPE, (yyvsp[(1) - (1)].dval)); ;}
+#line 2033 "pir.y"
+ { (yyval.cval) = new_const(lexer, NUM_VAL, (yyvsp[(1) - (1)].dval)); ;}
break;
case 339:
-#line 2031 "pir.y"
+#line 2034 "pir.y"
{ (yyval.cval) = (yyvsp[(1) - (1)].cval); ;}
break;
case 340:
-#line 2034 "pir.y"
- { (yyval.ival) = OP_NE; ;}
+#line 2035 "pir.y"
+ { (yyval.cval) = new_const(lexer, USTRING_VAL, (yyvsp[(1) - (1)].ustr)); ;}
break;
case 341:
-#line 2035 "pir.y"
- { (yyval.ival) = OP_EQ; ;}
+#line 2038 "pir.y"
+ { (yyval.cval) = new_const(lexer, STRING_VAL, (yyvsp[(1) - (1)].sval)); ;}
break;
case 342:
-#line 2036 "pir.y"
- { (yyval.ival) = OP_LT; ;}
+#line 2039 "pir.y"
+ { (yyval.cval) = new_const(lexer, USTRING_VAL, (yyvsp[(1) - (1)].ustr)); ;}
break;
case 343:
-#line 2037 "pir.y"
- { (yyval.ival) = OP_LE; ;}
+#line 2042 "pir.y"
+ { (yyval.ival) = OP_NE; ;}
break;
case 344:
-#line 2038 "pir.y"
- { (yyval.ival) = OP_GE; ;}
+#line 2043 "pir.y"
+ { (yyval.ival) = OP_EQ; ;}
break;
case 345:
-#line 2039 "pir.y"
- { (yyval.ival) = OP_GT; ;}
+#line 2044 "pir.y"
+ { (yyval.ival) = OP_LT; ;}
break;
case 346:
-#line 2042 "pir.y"
- { (yyval.ival) = INT_TYPE; ;}
+#line 2045 "pir.y"
+ { (yyval.ival) = OP_LE; ;}
break;
case 347:
-#line 2043 "pir.y"
- { (yyval.ival) = NUM_TYPE; ;}
+#line 2046 "pir.y"
+ { (yyval.ival) = OP_GE; ;}
break;
case 348:
-#line 2044 "pir.y"
- { (yyval.ival) = PMC_TYPE; ;}
+#line 2047 "pir.y"
+ { (yyval.ival) = OP_GT; ;}
break;
case 349:
-#line 2045 "pir.y"
- { (yyval.ival) = STRING_TYPE; ;}
+#line 2050 "pir.y"
+ { (yyval.ival) = INT_TYPE; ;}
break;
case 350:
+#line 2051 "pir.y"
+ { (yyval.ival) = NUM_TYPE; ;}
+ break;
+
+ case 351:
+#line 2052 "pir.y"
+ { (yyval.ival) = PMC_TYPE; ;}
+ break;
+
+ case 352:
#line 2053 "pir.y"
+ { (yyval.ival) = STRING_TYPE; ;}
+ break;
+
+ case 353:
+#line 2061 "pir.y"
{ set_curtarget(lexer, (yyvsp[(1) - (1)].targ)); ;}
break;
- case 352:
-#line 2057 "pir.y"
+ case 355:
+#line 2065 "pir.y"
{ /* a symbol must have been declared; check that at this point. */
symbol * sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
if (sym == NULL) {
@@ -4443,278 +4467,278 @@
;}
break;
- case 353:
-#line 2068 "pir.y"
+ case 356:
+#line 2076 "pir.y"
{ (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival)); ;}
break;
- case 354:
-#line 2069 "pir.y"
+ case 357:
+#line 2077 "pir.y"
{ (yyval.targ) = new_reg(lexer, NUM_TYPE, (yyvsp[(1) - (1)].ival)); ;}
break;
- case 355:
-#line 2070 "pir.y"
+ case 358:
+#line 2078 "pir.y"
{ (yyval.targ) = new_reg(lexer, INT_TYPE, (yyvsp[(1) - (1)].ival)); ;}
break;
- case 356:
-#line 2071 "pir.y"
+ case 359:
+#line 2079 "pir.y"
{ (yyval.targ) = new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival)); ;}
break;
- case 359:
-#line 2079 "pir.y"
+ case 362:
+#line 2087 "pir.y"
{ (yyval.sval) = "if"; ;}
break;
- case 360:
-#line 2080 "pir.y"
+ case 363:
+#line 2088 "pir.y"
{ (yyval.sval) = "unless"; ;}
break;
- case 361:
-#line 2081 "pir.y"
+ case 364:
+#line 2089 "pir.y"
{ (yyval.sval) = "goto"; ;}
break;
- case 362:
-#line 2082 "pir.y"
+ case 365:
+#line 2090 "pir.y"
{ (yyval.sval) = "int"; ;}
break;
- case 363:
-#line 2083 "pir.y"
+ case 366:
+#line 2091 "pir.y"
{ (yyval.sval) = "num"; ;}
break;
- case 364:
-#line 2084 "pir.y"
+ case 367:
+#line 2092 "pir.y"
{ (yyval.sval) = "string"; ;}
break;
- case 365:
-#line 2085 "pir.y"
+ case 368:
+#line 2093 "pir.y"
{ (yyval.sval) = "pmc"; ;}
break;
- case 366:
-#line 2086 "pir.y"
+ case 369:
+#line 2094 "pir.y"
{ (yyval.sval) = "null"; ;}
break;
- case 367:
-#line 2089 "pir.y"
+ case 370:
+#line 2097 "pir.y"
{ (yyval.sval) = "neg"; ;}
break;
- case 368:
-#line 2090 "pir.y"
+ case 371:
+#line 2098 "pir.y"
{ (yyval.sval) = "not"; ;}
break;
- case 369:
-#line 2091 "pir.y"
+ case 372:
+#line 2099 "pir.y"
{ (yyval.sval) = "bnot"; ;}
break;
- case 370:
-#line 2094 "pir.y"
+ case 373:
+#line 2102 "pir.y"
{ (yyval.ival) = OP_ADD; ;}
break;
- case 371:
-#line 2095 "pir.y"
+ case 374:
+#line 2103 "pir.y"
{ (yyval.ival) = OP_SUB; ;}
break;
- case 372:
-#line 2096 "pir.y"
+ case 375:
+#line 2104 "pir.y"
{ (yyval.ival) = OP_DIV; ;}
break;
- case 373:
-#line 2097 "pir.y"
+ case 376:
+#line 2105 "pir.y"
{ (yyval.ival) = OP_MUL; ;}
break;
- case 374:
-#line 2098 "pir.y"
+ case 377:
+#line 2106 "pir.y"
{ (yyval.ival) = OP_MOD; ;}
break;
- case 375:
-#line 2099 "pir.y"
+ case 378:
+#line 2107 "pir.y"
{ (yyval.ival) = OP_BOR; ;}
break;
- case 376:
-#line 2100 "pir.y"
+ case 379:
+#line 2108 "pir.y"
{ (yyval.ival) = OP_BAND; ;}
break;
- case 377:
-#line 2101 "pir.y"
+ case 380:
+#line 2109 "pir.y"
{ (yyval.ival) = OP_BXOR; ;}
break;
- case 378:
-#line 2102 "pir.y"
+ case 381:
+#line 2110 "pir.y"
{ (yyval.ival) = OP_POW; ;}
break;
- case 379:
-#line 2103 "pir.y"
+ case 382:
+#line 2111 "pir.y"
{ (yyval.ival) = OP_CONCAT; ;}
break;
- case 380:
-#line 2104 "pir.y"
+ case 383:
+#line 2112 "pir.y"
{ (yyval.ival) = OP_LSR; ;}
break;
- case 381:
-#line 2105 "pir.y"
+ case 384:
+#line 2113 "pir.y"
{ (yyval.ival) = OP_SHR; ;}
break;
- case 382:
-#line 2106 "pir.y"
+ case 385:
+#line 2114 "pir.y"
{ (yyval.ival) = OP_SHL; ;}
break;
- case 383:
-#line 2107 "pir.y"
+ case 386:
+#line 2115 "pir.y"
{ (yyval.ival) = OP_OR; ;}
break;
- case 384:
-#line 2108 "pir.y"
+ case 387:
+#line 2116 "pir.y"
{ (yyval.ival) = OP_AND; ;}
break;
- case 385:
-#line 2109 "pir.y"
+ case 388:
+#line 2117 "pir.y"
{ (yyval.ival) = OP_FDIV; ;}
break;
- case 386:
-#line 2110 "pir.y"
+ case 389:
+#line 2118 "pir.y"
{ (yyval.ival) = OP_XOR; ;}
break;
- case 387:
-#line 2111 "pir.y"
+ case 390:
+#line 2119 "pir.y"
{ (yyval.ival) = OP_ISEQ; ;}
break;
- case 388:
-#line 2112 "pir.y"
+ case 391:
+#line 2120 "pir.y"
{ (yyval.ival) = OP_ISLE; ;}
break;
- case 389:
-#line 2113 "pir.y"
+ case 392:
+#line 2121 "pir.y"
{ (yyval.ival) = OP_ISLT; ;}
break;
- case 390:
-#line 2114 "pir.y"
+ case 393:
+#line 2122 "pir.y"
{ (yyval.ival) = OP_ISGE; ;}
break;
- case 391:
-#line 2115 "pir.y"
+ case 394:
+#line 2123 "pir.y"
{ (yyval.ival) = OP_ISGT; ;}
break;
- case 392:
-#line 2116 "pir.y"
+ case 395:
+#line 2124 "pir.y"
{ (yyval.ival) = OP_ISNE; ;}
break;
- case 393:
-#line 2122 "pir.y"
+ case 396:
+#line 2130 "pir.y"
{ (yyval.ival) = OP_MUL; ;}
break;
- case 394:
-#line 2123 "pir.y"
+ case 397:
+#line 2131 "pir.y"
{ (yyval.ival) = OP_MOD; ;}
break;
- case 395:
-#line 2124 "pir.y"
+ case 398:
+#line 2132 "pir.y"
{ (yyval.ival) = OP_POW; ;}
break;
- case 396:
-#line 2125 "pir.y"
+ case 399:
+#line 2133 "pir.y"
{ (yyval.ival) = OP_DIV; ;}
break;
- case 397:
-#line 2126 "pir.y"
+ case 400:
+#line 2134 "pir.y"
{ (yyval.ival) = OP_FDIV; ;}
break;
- case 398:
-#line 2127 "pir.y"
+ case 401:
+#line 2135 "pir.y"
{ (yyval.ival) = OP_BOR; ;}
break;
- case 399:
-#line 2128 "pir.y"
+ case 402:
+#line 2136 "pir.y"
{ (yyval.ival) = OP_BAND; ;}
break;
- case 400:
-#line 2129 "pir.y"
+ case 403:
+#line 2137 "pir.y"
{ (yyval.ival) = OP_BXOR; ;}
break;
- case 401:
-#line 2130 "pir.y"
+ case 404:
+#line 2138 "pir.y"
{ (yyval.ival) = OP_CONCAT; ;}
break;
- case 402:
-#line 2131 "pir.y"
+ case 405:
+#line 2139 "pir.y"
{ (yyval.ival) = OP_SHR; ;}
break;
- case 403:
-#line 2132 "pir.y"
+ case 406:
+#line 2140 "pir.y"
{ (yyval.ival) = OP_SHL; ;}
break;
- case 404:
-#line 2133 "pir.y"
+ case 407:
+#line 2141 "pir.y"
{ (yyval.ival) = OP_LSR; ;}
break;
- case 406:
-#line 2154 "pir.y"
+ case 409:
+#line 2162 "pir.y"
{ new_subr(lexer, "@start"); ;}
break;
- case 415:
-#line 2170 "pir.y"
+ case 418:
+#line 2178 "pir.y"
{ set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
break;
- case 420:
-#line 2180 "pir.y"
+ case 423:
+#line 2188 "pir.y"
{ set_sub_name(lexer, (yyvsp[(3) - (3)].sval)); ;}
break;
- case 421:
-#line 2184 "pir.y"
+ case 424:
+#line 2192 "pir.y"
{ new_subr(lexer, NULL); ;}
break;
- case 422:
-#line 2189 "pir.y"
+ case 425:
+#line 2197 "pir.y"
{
if (is_parrot_op(lexer, (yyvsp[(1) - (3)].sval)))
get_opinfo(yyscanner);
@@ -4726,7 +4750,7 @@
/* Line 1267 of yacc.c. */
-#line 4730 "pirparser.c"
+#line 4754 "pirparser.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -4940,15 +4964,19 @@
}
-#line 2200 "pir.y"
+#line 2208 "pir.y"
/* the order of these letters match with the pir_type enumeration.
* These are used for generating the full opname (set I0, 10 -> set_i_ic).
+ * The first 5 correspond to the values in the pir_type enumeration,
+ * the last 5 correspond to the values in the value_type enumeration.
+ * Note that the last 's' corresponds to USTRING_VAL, which is a unicode
+ * string, but when used it's still a string.
*/
-static char const type_codes[5] = {'i', 's', 'p', 'n', '?'};
+static char const type_codes[10] = {'i', 's', 'p', 'n', '?', 'i', 's', 'p', 'n', 's'};
/*
@@ -5056,7 +5084,7 @@
"detected 'inc' or 'dec' in fold_i_i()");
break;
}
- return new_const((lexer_state * const)yypirget_extra(yyscanner), INT_TYPE, result);
+ return new_const((lexer_state * const)yypirget_extra(yyscanner), INT_VAL, result);
}
/*
@@ -5140,7 +5168,7 @@
"detected 'inc' or 'dec' in fold_n_i()");
break;
}
- return new_const((lexer_state * const)yypirget_extra(yyscanner), NUM_TYPE, result);
+ return new_const((lexer_state * const)yypirget_extra(yyscanner), NUM_VAL, result);
}
/*
@@ -5224,7 +5252,7 @@
"detected 'inc' or 'dec' in fold_i_n()");
break;
}
- return new_const((lexer_state * const)yypirget_extra(yyscanner), NUM_TYPE, result);
+ return new_const((lexer_state * const)yypirget_extra(yyscanner), NUM_VAL, result);
}
/*
@@ -5309,7 +5337,7 @@
default:
break;
}
- return new_const((lexer_state * const)yypirget_extra(yyscanner), NUM_TYPE, result);
+ return new_const((lexer_state * const)yypirget_extra(yyscanner), NUM_VAL, result);
}
/*
@@ -5331,7 +5359,7 @@
lexer_state *lexer = (lexer_state *)yypirget_extra(yyscanner);
switch (op) {
case OP_CONCAT:
- return new_const(lexer, STRING_TYPE, concat_strings(lexer, a, b));
+ return new_const(lexer, STRING_VAL, concat_strings(lexer, a, b));
case OP_ADD:
case OP_SUB:
@@ -5351,7 +5379,7 @@
case OP_FDIV:
yypirerror(yyscanner, lexer,
"cannot apply binary operator '%s' to arguments of type number", opnames[op]);
- return new_const(lexer, STRING_TYPE, a);
+ return new_const(lexer, STRING_VAL, a);
case OP_ISEQ:
case OP_ISLE:
@@ -5359,7 +5387,7 @@
case OP_ISGE:
case OP_ISGT:
case OP_ISNE:
- return new_const(lexer, INT_TYPE, (1 == evaluate_s_s(a, op, b)));
+ return new_const(lexer, INT_VAL, (1 == evaluate_s_s(a, op, b)));
/* OP_INC and OP_DEC are here only to keep the C compiler happy */
@@ -5539,12 +5567,14 @@
static int
evaluate_c(NOTNULL(lexer_state * const lexer), NOTNULL(constant * const c)) {
switch (c->type) {
- case INT_TYPE:
+ case INT_VAL:
return (c->val.ival != 0);
- case NUM_TYPE:
+ case NUM_VAL:
return (c->val.nval != 0);
- case STRING_TYPE:
+ case STRING_VAL:
return evaluate_s(c->val.sval);
+ case USTRING_VAL:
+ return evaluate_s(c->val.ustr->contents);
default:
panic(lexer, "impossible constant type in evaluate_c()");
return 0;
@@ -5634,9 +5664,9 @@
static int
check_value(NOTNULL(constant * const c), int val) {
switch(c->type) {
- case INT_TYPE:
+ case INT_VAL:
return (c->val.ival == val);
- case NUM_TYPE:
+ case NUM_VAL:
return (c->val.nval == val);
default:
break;
@@ -6053,7 +6083,7 @@
int n;
/* if the key is an integer constant, then signature becomes '_kic', otherwise _kc. */
if (e->expr.k->head->expr->type == EXPR_CONSTANT
- && e->expr.k->head->expr->expr.c->type == INT_TYPE)
+ && e->expr.k->head->expr->expr.c->type == INT_VAL)
n = 3;
else
n = 2;
@@ -6116,7 +6146,7 @@
break;
case EXPR_CONSTANT:
/* integer constant key results in '_kic' signature */
- if (iter->expr.c->type == INT_TYPE)
+ if (iter->expr.c->type == INT_VAL)
*instr_writer++ = 'i';
*instr_writer++ = 'c';
Modified: trunk/compilers/pirc/new/pirparser.h
==============================================================================
--- trunk/compilers/pirc/new/pirparser.h (original)
+++ trunk/compilers/pirc/new/pirparser.h Sat Jan 3 03:55:47 2009
@@ -289,6 +289,7 @@
unsigned uval;
char const *sval;
struct constant *cval;
+ struct ucstring *ustr;
struct instruction *instr;
struct expression *expr;
struct target *targ;
@@ -300,7 +301,7 @@
struct macro_param *pval;
}
/* Line 1489 of yacc.c. */
-#line 304 "pirparser.h"
+#line 305 "pirparser.h"
YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
Modified: trunk/compilers/pirc/new/pirpcc.c
==============================================================================
--- trunk/compilers/pirc/new/pirpcc.c (original)
+++ trunk/compilers/pirc/new/pirpcc.c Sat Jan 3 03:55:47 2009
@@ -177,7 +177,7 @@
/* default sub epilogue; no return values, hence 0 */
int array_index = generate_signature_pmc(lexer, 0);
new_sub_instr(lexer, PARROT_OP_set_returns_pc, "set_returns_pc", 0);
- push_operand(lexer, expr_from_const(lexer, new_const(lexer, INT_TYPE, array_index)));
+ push_operand(lexer, expr_from_int(lexer, array_index));
new_sub_instr(lexer, PARROT_OP_returncc, "returncc", 0);
}
-
[svn:parrot] r34870 - trunk/compilers/pirc/new
by kjs