pike.git/
src/
language.yacc
Branch:
Tag:
Non-build tags
All tags
No tags
2000-06-22
2000-06-22 17:31:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>
82e1b7c1e7eebafa323a96d18e058915b1e4be6a (
65
lines) (+
55
/-
10
)
[
Show
|
Annotate
]
Branch:
7.9
Placeholder code for multi-level :: support.
Rev: src/language.yacc:1.190
109:
/* This is the grammar definition of Pike. */ #include "global.h"
-
RCSID("$Id: language.yacc,v 1.
189
2000/06/
21
15
:
01
:
58
grubba Exp $");
+
RCSID("$Id: language.yacc,v 1.
190
2000/06/
22
17
:
31
:
39
grubba Exp $");
#ifdef HAVE_MEMORY_H #include <memory.h> #endif
291:
%type <n> gauge %type <n> idents %type <n> idents2
+
%type <n> inherit_specifier
%type <n> lambda %type <n> local_name_list %type <n> local_name_list2
2354:
| idents '.' error {} ;
+
inherit_specifier: TOK_IDENTIFIER TOK_COLON_COLON
+
{
+
/* FIXME: The following doesn't work...
+
struct program *p = find_named_inherit(new_program, $1->u.sval.u.string);
+
+
if (!p) {
+
my_yyerror("No such inherit \"%s\".", $1->u.sval.u.string->str);
+
$$ = 0;
+
} else {
+
struct svalue s;
+
s.type = T_PROGRAM;
+
s.subtype = 0;
+
s.u.program = p;
+
$$ = mkconstantsvaluenode(&s);
+
}
+
free_node($1);
+
*/
+
}
+
| inherit_specifier TOK_IDENTIFIER TOK_COLON_COLON
+
{
+
/* FIXME: This doesn't work either...
+
if ($1) {
+
struct program *p = find_named_inherit($1->u.sval.u.program,
+
$2->u.sval.u.string);
+
+
if (!p) {
+
my_yyerror("No such inherit \"%s\".", $2->u.sval.u.string->str);
+
free_node($1);
+
$$ = 0;
+
} else {
+
struct svalue s;
+
s.type = T_PROGRAM;
+
s.subtype = 0;
+
s.u.program = p;
+
$$ = mkconstantsvaluenode(&s);
+
}
+
}
+
*/
+
yywarning("Multi-level ::-resolving not yet supported.");
+
free_node($2);
+
}
+
;
+
low_idents: TOK_IDENTIFIER { int i;
2404:
{ $$=0; }
-
|
TOK
_
IDENTIFIER
TOK_
COLON_COLON TOK_
IDENTIFIER
+
|
inherit
_
specifier
TOK_IDENTIFIER
{ if(last_identifier) free_string(last_identifier);
-
copy_shared_string(last_identifier,
$3
->u.sval.u.string);
+
copy_shared_string(last_identifier,
$2
->u.sval.u.string);
-
$$=reference_inherited_identifier($1->u.sval.u.string,
-
$3
->u.sval.u.string);
+
$$
=
reference_inherited_identifier($1->u.sval.u.string,
+
$2
->u.sval.u.string);
if (!$$) {
-
my_yyerror("Undefined identifier %s::%s",
+
my_yyerror("Undefined identifier %s::%s
.
",
$1->u.sval.u.string->str,
-
$3
->u.sval.u.string->str);
+
$2
->u.sval.u.string->str);
$$=0; } free_node($1);
-
free_node(
$3
);
+
free_node(
$2
);
}
-
|
TOK
_
IDENTIFIER
TOK_COLON_COLON
bad_identifier
-
|
TOK
_
IDENTIFIER
TOK_COLON_COLON
error
+
|
inherit
_
specifier
bad_identifier
+
|
inherit
_
specifier
error
| TOK_COLON_COLON TOK_IDENTIFIER { int e,i;