Author: kjs
Date: Sun Mar 25 09:10:49 2007
New Revision: 17732
Modified:
trunk/compilers/pirc/src/pirlexer.c
trunk/compilers/pirc/src/pirlexer.h
trunk/compilers/pirc/src/pirparser.c
Log:
compilers/pirc:
* added :method flag
Modified: trunk/compilers/pirc/src/pirlexer.c
==============================================================================
--- trunk/compilers/pirc/src/pirlexer.c (original)
+++ trunk/compilers/pirc/src/pirlexer.c Sun Mar 25 09:10:49 2007
@@ -119,6 +119,7 @@
":lex", /* T_LEX_FLAG */
":load", /* T_LOAD_FLAG */
":main", /* T_MAIN_FLAG */
+ ":method", /* T_METHOD_FLAG */
":multi", /* T_MULTI_FLAG */
":outer", /* T_OUTER_FLAG */
":postcomp", /* T_POSTCOMP_FLAG */
Modified: trunk/compilers/pirc/src/pirlexer.h
==============================================================================
--- trunk/compilers/pirc/src/pirlexer.h (original)
+++ trunk/compilers/pirc/src/pirlexer.h Sun Mar 25 09:10:49 2007
@@ -57,6 +57,7 @@
T_LEX_FLAG, /* ":lex", */
T_LOAD_FLAG, /* ":load", */
T_MAIN_FLAG, /* ":main", */
+ T_METHOD_FLAG, /* ":method", */
T_MULTI_FLAG, /* ":multi", */
T_OUTER_FLAG, /* ":outer", */
T_POSTCOMP_FLAG, /* ":postcomp", */
Modified: trunk/compilers/pirc/src/pirparser.c
==============================================================================
--- trunk/compilers/pirc/src/pirparser.c (original)
+++ trunk/compilers/pirc/src/pirparser.c Sun Mar 25 09:10:49 2007
@@ -259,16 +259,14 @@
=item stringconstant()
- strinconstant -> DOUBLE_QUOTED_STRING | SINGLE_QUOTED_STRING
+ stringconstant -> DOUBLE_QUOTED_STRING | SINGLE_QUOTED_STRING
=cut
*/
static void
stringconstant(parser_state *p) {
-
- if (p->curtoken == T_DOUBLE_QUOTED_STRING
- || p->curtoken == T_SINGLE_QUOTED_STRING) {
+ if (p->curtoken == T_DOUBLE_QUOTED_STRING || p->curtoken ==
T_SINGLE_QUOTED_STRING) {
next(p);
}
else {
@@ -281,7 +279,7 @@
=item method()
method -> IDENT | stringconstant
-
+
=cut
*/
@@ -452,8 +450,7 @@
*/
static void
-global_definition(parser_state *p) {
- /* global_definition -> '.global' IDENT */
+global_definition(parser_state *p) {
match(p, T_GLOBAL_DECL);
match(p, T_IDENTIFIER);
}
@@ -568,7 +565,7 @@
| stringconstant arguments
| 'global' stringconstant
| heredocstring
- | methodcall
+ | methodcall
| 'null'
) '\n'
@@ -594,7 +591,7 @@
case T_SINGLE_QUOTED_STRING: /* "foo"() */
case T_DOUBLE_QUOTED_STRING:
next(p);
- arguments(p);
+ arguments(p);
break;
case T_IDENTIFIER:
case T_PREG:
@@ -618,7 +615,7 @@
break;
}
break;
- case T_GLOBAL: /* x = glboal 'i' */
+ case T_GLOBAL: /* x = global 'i' */
next(p);
stringconstant(p);
break;
@@ -685,9 +682,9 @@
target(p);
if (p->curtoken == T_PTR) {
next(p);
- method(p);
- }
- arguments(p);
+ method(p);
+ }
+ arguments(p);
break;
}
match(p, T_NEWLINE);
@@ -1290,30 +1287,6 @@
match(p, T_NEWLINE);
}
-/*
-
-=item var()
-
- var -> IDENT | REGISTER
-
-=cut
-
-*/
-static void
-var(parser_state *p) {
- switch (p->curtoken) {
- case T_IDENTIFIER:
- case T_PASM_PREG: case T_PREG:
- case T_PASM_SREG: case T_SREG:
- case T_PASM_NREG: case T_NREG:
- case T_PASM_IREG: case T_IREG:
- next(p);
- break;
- default:
- syntax_error(p, 1, "identifier or register expected");
- break;
- }
-}
/*
@@ -1326,7 +1299,6 @@
*/
static void
get_results_instruction(parser_state *p) {
-
match(p, T_GET_RESULTS);
target_list(p);
match(p, T_NEWLINE);
@@ -1484,7 +1456,7 @@
break;
case T_NULL: /* 'null' is a PIR keyword, but also an instruction.
*/
next(p);
- var(p); /* IMCC accepts "null $I0", does that make sense?? */
+ target(p); /* IMCC accepts "null $I0", does that make sense??
*/
break;
case T_GET_RESULTS: /* '.get_results' target_list */
get_results_instruction(p);
@@ -1560,6 +1532,7 @@
| ':init'
| ':load'
| ':main'
+ | ':method'
| ':lex'
| ':outer' '(' stringconstant ')'
| ':vtable' '(' stringconstant ')'
@@ -1590,6 +1563,9 @@
case T_MAIN_FLAG:
next(p);
break;
+ case T_METHOD_FLAG:
+ next(p);
+ break;
case T_LEX_FLAG:
next(p);
break;