X-Git-Url: http://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/f319f19a8ef9c6d076359ed4bbbc42cdecefc0f0..daead564b9592e78d418deb56a211cd5ea399f76:/src/parse.c diff --git a/src/parse.c b/src/parse.c index eeafa03..e50c96b 100644 --- a/src/parse.c +++ b/src/parse.c @@ -43,6 +43,7 @@ #include #include "tree.h" +#include "main.h" #define _(x) (x) @@ -57,7 +58,7 @@ static GList *typestack = NULL; static int stars = 0; static GList *funcargs = NULL; static GList *checks = NULL; -static int has_this = FALSE; +static int has_self = FALSE; static GList *gtktypes = NULL; @@ -95,13 +96,13 @@ yyerror(char *str) } static void -push_variable(char *name, int scope) +push_variable(char *name, int scope, int line_no) { Node *var; Type *type = typestack->data; typestack = g_list_remove(typestack,typestack->data); - var = new_variable(scope,type,name); + var = new_variable(scope,type,name,line_no); class_nodes = g_list_append(class_nodes, var); } @@ -158,7 +159,7 @@ push_init_arg(char *name, int is_class) } static void -push_this(char *this) +push_self(char *id) { Node *node; Node *type; @@ -166,12 +167,12 @@ push_this(char *this) type = new_type(1,g_strdup(((Class *)class)->otype)); ch = g_list_append(ch,new_check(NULL_CHECK,NULL)); ch = g_list_append(ch,new_check(TYPE_CHECK,NULL)); - node = new_funcarg((Type *)type,this,ch); + node = new_funcarg((Type *)type,id,ch); funcargs = g_list_prepend(funcargs, node); } -#line 158 "parse.y" +#line 159 "parse.y" typedef union { char *id; GString *cbuf; @@ -192,11 +193,11 @@ typedef union { -#define YYFINAL 190 +#define YYFINAL 187 #define YYFLAG -32768 #define YYNTBASE 45 -#define YYTRANSLATE(x) ((unsigned)(x) <= 285 ? yytranslate[x] : 69) +#define YYTRANSLATE(x) ((unsigned)(x) <= 285 ? yytranslate[x] : 70) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -237,18 +238,18 @@ static const short yyprhs[] = { 0, 78, 82, 83, 87, 89, 91, 94, 97, 100, 102, 105, 108, 110, 112, 114, 116, 119, 121, 123, 126, 128, 131, 133, 135, 137, 139, 141, 144, 146, 151, - 155, 157, 169, 180, 191, 201, 211, 220, 233, 243, - 253, 259, 266, 269, 273, 276, 277, 279, 281, 285, - 287, 291, 293, 296, 303, 306, 308, 310, 313, 316, - 320, 324, 328, 332, 334, 337 + 155, 157, 160, 162, 173, 183, 192, 205, 215, 225, + 231, 238, 241, 245, 248, 249, 251, 253, 257, 259, + 263, 265, 268, 275, 278, 280, 282, 285, 288, 292, + 296, 300, 304, 306, 309 }; static const short yyrhs[] = { 46, 47, 46, 0, 47, 46, 0, 46, 47, 0, 47, 0, 46, 23, 0, 46, 24, 0, 23, 0, 24, 0, 48, 31, 49, 32, 0, 3, 22, 4, 22, - 0, 49, 61, 0, 49, 50, 0, 49, 51, 0, - 61, 0, 50, 0, 51, 0, 25, 54, 20, 33, + 0, 49, 62, 0, 49, 50, 0, 49, 51, 0, + 62, 0, 50, 0, 51, 0, 25, 54, 20, 33, 0, 26, 54, 20, 33, 0, 27, 52, 20, 20, 20, 31, 23, 20, 31, 23, 33, 0, 27, 52, 20, 20, 20, 31, 23, 33, 0, 34, 53, 35, @@ -259,40 +260,37 @@ static const short yyrhs[] = { 46, 5, 0, 11, 13, 0, 11, 0, 12, 13, 0, 12, 0, 13, 0, 8, 0, 7, 0, 6, 0, 37, 58, 0, 37, 0, 20, 34, 60, 35, 0, - 60, 38, 20, 0, 20, 0, 29, 20, 59, 54, - 20, 34, 63, 35, 62, 31, 23, 0, 29, 20, - 59, 54, 20, 34, 63, 35, 62, 33, 0, 29, - 59, 54, 20, 34, 63, 35, 62, 31, 23, 0, - 29, 59, 54, 20, 34, 63, 35, 62, 33, 0, - 28, 54, 20, 34, 63, 35, 62, 31, 23, 0, - 28, 54, 20, 34, 63, 35, 62, 33, 0, 30, - 34, 22, 35, 54, 20, 34, 63, 35, 62, 31, - 23, 0, 25, 54, 20, 34, 63, 35, 62, 31, - 23, 0, 26, 54, 20, 34, 63, 35, 62, 31, - 23, 0, 20, 34, 20, 35, 33, 0, 20, 34, - 20, 35, 31, 23, 0, 19, 68, 0, 19, 31, - 23, 0, 39, 40, 0, 0, 5, 0, 20, 0, - 20, 38, 64, 0, 64, 0, 64, 38, 65, 0, - 65, 0, 54, 20, 0, 54, 20, 34, 20, 66, - 35, 0, 66, 67, 0, 67, 0, 20, 0, 41, - 68, 0, 42, 68, 0, 41, 39, 68, 0, 42, - 39, 68, 0, 39, 39, 68, 0, 43, 39, 68, - 0, 21, 0, 44, 21, 0, 20, 0 + 60, 38, 20, 0, 20, 0, 31, 23, 0, 33, + 0, 29, 20, 59, 54, 20, 34, 64, 35, 63, + 61, 0, 29, 59, 54, 20, 34, 64, 35, 63, + 61, 0, 28, 54, 20, 34, 64, 35, 63, 61, + 0, 30, 34, 22, 35, 54, 20, 34, 64, 35, + 63, 31, 23, 0, 25, 54, 20, 34, 64, 35, + 63, 31, 23, 0, 26, 54, 20, 34, 64, 35, + 63, 31, 23, 0, 20, 34, 20, 35, 33, 0, + 20, 34, 20, 35, 31, 23, 0, 19, 69, 0, + 19, 31, 23, 0, 39, 40, 0, 0, 5, 0, + 20, 0, 20, 38, 65, 0, 65, 0, 65, 38, + 66, 0, 66, 0, 54, 20, 0, 54, 20, 34, + 20, 67, 35, 0, 67, 68, 0, 68, 0, 20, + 0, 41, 69, 0, 42, 69, 0, 41, 39, 69, + 0, 42, 39, 69, 0, 39, 39, 69, 0, 43, + 39, 69, 0, 21, 0, 44, 21, 0, 20, 0 }; #endif #if YYDEBUG != 0 static const short yyrline[] = { 0, - 176, 177, 178, 179, 182, 186, 190, 194, 200, 207, - 212, 213, 214, 215, 216, 217, 220, 223, 227, 254, - 278, 279, 282, 285, 291, 295, 302, 305, 308, 311, - 314, 317, 320, 323, 326, 329, 333, 336, 341, 344, - 347, 350, 353, 358, 361, 364, 369, 370, 373, 378, - 381, 387, 408, 428, 437, 446, 450, 454, 458, 462, - 466, 482, 503, 504, 508, 509, 514, 515, 525, 535, - 538, 539, 542, 545, 555, 556, 559, 572, 576, 580, - 584, 588, 592, 598, 599, 603 + 177, 178, 179, 180, 183, 187, 191, 195, 201, 208, + 213, 214, 215, 216, 217, 218, 221, 224, 228, 257, + 283, 284, 287, 290, 296, 300, 307, 310, 313, 316, + 319, 322, 325, 328, 331, 334, 338, 341, 346, 349, + 352, 355, 358, 363, 366, 369, 374, 375, 378, 383, + 386, 391, 392, 396, 417, 426, 435, 439, 443, 447, + 463, 484, 485, 489, 490, 495, 496, 511, 526, 529, + 530, 533, 536, 546, 547, 550, 563, 567, 571, 575, + 579, 583, 589, 590, 594 }; #endif @@ -306,7 +304,8 @@ static const char * const yytname[] = { "$","error","$undefined.","CLASS", "'{'","'}'","';'","'('","')'","'|'","'*'","','","'='","'1'","'>'","'<'","'!'", "'-'","prog","ccodes","class","classdec","classcode","variable","argument","argflags", "flaglist","type","type1","integer","tspecifier","stars","sigtype","tokenlist", -"method","onerror","funcargs","arglist","arg","checklist","check","numtok", NULL +"codenocode","method","onerror","funcargs","arglist","arg","checklist","check", +"numtok", NULL }; #endif @@ -316,10 +315,10 @@ static const short yyr1[] = { 0, 52, 52, 53, 53, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 57, 57, 57, 58, 58, 59, 60, - 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 62, 62, 62, 62, 63, 63, 63, 63, - 64, 64, 65, 65, 66, 66, 67, 67, 67, 67, - 67, 67, 67, 68, 68, 68 + 60, 61, 61, 62, 62, 62, 62, 62, 62, 62, + 62, 63, 63, 63, 63, 64, 64, 64, 64, 65, + 65, 66, 66, 67, 67, 68, 68, 68, 68, 68, + 68, 68, 69, 69, 69 }; static const short yyr2[] = { 0, @@ -328,10 +327,10 @@ static const short yyr2[] = { 0, 3, 0, 3, 1, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 4, 3, - 1, 11, 10, 10, 9, 9, 8, 12, 9, 9, - 5, 6, 2, 3, 2, 0, 1, 1, 3, 1, - 3, 1, 2, 6, 2, 1, 1, 2, 2, 3, - 3, 3, 3, 1, 2, 1 + 1, 2, 1, 10, 9, 8, 12, 9, 9, 5, + 6, 2, 3, 2, 0, 1, 1, 3, 1, 3, + 1, 2, 6, 2, 1, 1, 2, 2, 3, 3, + 3, 3, 1, 2, 1 }; static const short yydefact[] = { 0, @@ -344,104 +343,108 @@ static const short yydefact[] = { 0, 27, 39, 41, 0, 48, 26, 36, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 47, 18, 0, 0, 21, 0, 0, 51, 0, 0, - 0, 0, 0, 61, 38, 35, 0, 0, 70, 72, - 0, 23, 0, 0, 49, 0, 0, 0, 0, 62, - 0, 73, 66, 0, 66, 0, 66, 50, 0, 0, - 0, 69, 0, 0, 0, 0, 71, 0, 0, 0, - 0, 66, 0, 0, 86, 84, 0, 0, 63, 65, - 0, 0, 0, 20, 0, 57, 66, 0, 0, 77, - 0, 0, 0, 0, 0, 76, 64, 85, 59, 60, - 0, 56, 0, 0, 55, 66, 0, 0, 78, 0, - 79, 0, 74, 75, 0, 0, 53, 54, 0, 82, - 80, 81, 83, 19, 52, 0, 58, 0, 0, 0 + 0, 0, 0, 60, 38, 35, 0, 0, 69, 71, + 0, 23, 0, 0, 49, 0, 0, 0, 0, 61, + 0, 72, 65, 0, 65, 0, 65, 50, 0, 0, + 0, 68, 0, 0, 0, 0, 70, 0, 0, 0, + 0, 65, 0, 0, 85, 83, 0, 0, 62, 64, + 0, 0, 0, 20, 0, 53, 56, 65, 0, 0, + 76, 0, 0, 0, 0, 0, 75, 63, 84, 58, + 59, 0, 52, 0, 55, 65, 0, 0, 77, 0, + 78, 0, 73, 74, 0, 54, 0, 81, 79, 80, + 82, 19, 0, 57, 0, 0, 0 }; -static const short yydefgoto[] = { 188, +static const short yydefgoto[] = { 185, 4, 5, 6, 22, 23, 24, 48, 70, 97, 43, - 44, 45, 66, 51, 89, 25, 126, 98, 99, 100, - 155, 156, 139 + 44, 45, 66, 51, 89, 147, 25, 126, 98, 99, + 100, 156, 157, 139 }; -static const short yypact[] = { 33, - 11,-32768,-32768, 44, 51, -19, 18,-32768,-32768, 51, - 79, 52, 61, 79, 4, 85, 85, 70, 85, 9, - 72, 101,-32768,-32768,-32768,-32768, 32,-32768,-32768,-32768, --32768, 123, 129, 107, 109,-32768,-32768,-32768,-32768,-32768, --32768, 112, 87,-32768, 128, 130, 131, 132, 133, -10, - 85, 127,-32768,-32768,-32768,-32768, 119,-32768,-32768,-32768, --32768,-32768,-32768, 104, 87,-32768,-32768, 110, 120, 122, - 135, 124, 125, 140, 85, 141, 134, 27,-32768, 103, --32768,-32768, 103, 131,-32768, 142, 103,-32768, -12, 143, - 136, 85, 144,-32768, 137, 16, 145, 138, 126,-32768, - 139,-32768, 146, 147,-32768, 148, 149, 103, 151,-32768, - 85, 150, 6, 85, 6, 152, 6,-32768, 103, 153, - 155, 126, 156, -13, 154, 159,-32768, 160, -5, 30, - 157, 6, 103, 23,-32768,-32768, 158, 164,-32768,-32768, - 163, 170, 165,-32768, 172,-32768, 6, 40, 162,-32768, - 161, -7, 0, 166, 7,-32768,-32768,-32768,-32768,-32768, - 175,-32768, 55, 176,-32768, 6, -4, -4,-32768, -4, --32768, -4,-32768,-32768, 168, 179,-32768,-32768, 173,-32768, --32768,-32768,-32768,-32768,-32768, 180,-32768, 178, 187,-32768 +static const short yypact[] = { 26, + -14,-32768,-32768, 37, 51, -6, 43,-32768,-32768, 51, + 98, 99, 8, 98, 20, 72, 72, 24, 72, 52, + 57, 88,-32768,-32768,-32768,-32768, 69,-32768,-32768,-32768, +-32768, 119, 125, 94, 96,-32768,-32768,-32768,-32768,-32768, +-32768, 91, 86,-32768, 120, 127, 128, 129, 130, 33, + 72, 131,-32768,-32768,-32768,-32768, 116,-32768,-32768,-32768, +-32768,-32768,-32768, 100, 86,-32768,-32768, 110, 118, 117, + 135, 122, 123, 138, 72, 139, 126, 31,-32768, 90, +-32768,-32768, 90, 128,-32768, 140, 90,-32768, 55, 142, + 132, 72, 141,-32768, 133, 104, 143, 134, 136,-32768, + 137,-32768, 144, 145,-32768, 147, 148, 90, 150,-32768, + 72, 149, -17, 72, -17, 153, -17,-32768, 90, 146, + 151, 136, 157, -11, 152, 155,-32768, 156, 36, 40, + 154, -17, 90, -15,-32768,-32768, 161, 158,-32768,-32768, + 165, 167, 160,-32768, 170,-32768,-32768, -17, 40, 159, +-32768, 162, -8, -5, 163, 3,-32768,-32768,-32768,-32768, +-32768, 172,-32768, 40,-32768, -17, -3, -3,-32768, -3, +-32768, -3,-32768,-32768, 164,-32768, 168,-32768,-32768,-32768, +-32768,-32768, 173,-32768, 171, 178,-32768 }; static const short yypgoto[] = {-32768, - 1, 202,-32768,-32768, 185, 186,-32768, 82, -16,-32768, - 114,-32768, 115, 167,-32768, 188, -113, -78, 68, 95, --32768, 56, -83 + 9, 169,-32768,-32768, 176, 181,-32768, 81, -16,-32768, + 113,-32768, 166, 174,-32768, -101, 182, -111, -76, 89, + 92,-32768, 49, -102 }; -#define YYLAST 217 +#define YYLAST 231 static const short yytable[] = { 42, - 46, 128, 49, 130, 101, 11, 135, 136, 104, 73, - 14, 12, 135, 136, 143, 135, 136, 137, 148, 135, - 136, 13, 105, 74, 124, 106, 150, 144, 50, 120, - 138, 168, 7, 163, 76, 1, 138, 27, 170, 138, - 131, 173, 150, 138, 125, 151, 1, 152, 153, 154, - -68, 57, 179, 111, 149, 2, 3, 93, 90, 94, - 145, 151, 146, 152, 153, 154, 8, 9, 169, 171, - 164, 15, 165, 2, 3, 109, 16, 17, 18, 19, - 20, 21, 26, 180, 181, 176, 182, 177, 183, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 8, 9, 47, 40, 52, 41, 95, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 62, - 15, 63, 96, 65, 41, 16, 17, 18, 19, 20, - 21, 64, 53, 34, 35, 36, 79, 80, 58, 34, - 35, 36, 82, 83, 60, 59, 61, 67, 77, 68, - 69, 71, 72, 78, 86, 84, 85, 87, 74, 88, - 91, 103, 107, 114, 112, 102, 110, 118, 92, 108, - 121, -67, 113, 115, 129, 134, 116, 189, 122, 81, - 157, 117, 119, 123, 158, 159, 190, 132, 133, 141, - 142, 147, 160, 140, 162, 161, 166, 175, 178, 167, - 184, 185, 187, 186, 172, 10, 54, 55, 127, 56, - 174, 0, 0, 0, 0, 0, 75 + 46, 124, 49, 128, 151, 130, 101, 7, 135, 136, + 104, 135, 136, 11, 135, 136, 135, 136, 14, 137, + 149, 125, 151, 152, 12, 153, 154, 155, 1, 26, + 168, 120, 138, 170, 76, 138, 164, 173, 138, 1, + 138, 152, 131, 153, 154, 155, 13, 165, 2, 3, + 169, 171, 73, 27, 177, 143, 150, 47, 90, 8, + 9, 93, 176, 94, 178, 179, 74, 180, 144, 181, + 145, 50, 146, 2, 3, 109, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 57, 105, + 52, 40, 106, 41, 95, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 62, 15, 63, 96, + 64, 41, 16, 17, 18, 19, 20, 21, 15, 53, + 8, 9, 65, 16, 17, 18, 19, 20, 21, 34, + 35, 36, 79, 80, 58, 34, 35, 36, -67, 67, + 60, 111, 82, 83, 59, 61, 68, 69, 71, 72, + 78, 85, 77, 84, 86, 87, 74, 88, 91, 103, + 92, 107, 112, 110, 102, 108, 118, -66, 113, 121, + 186, 115, 10, 114, 116, 129, 134, 187, 159, 117, + 132, 119, 123, 158, 133, 141, 142, 160, 148, 161, + 162, 140, 163, 166, 175, 184, 182, 54, 183, 122, + 167, 172, 55, 56, 174, 127, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, + 81 }; static const short yycheck[] = { 16, - 17, 115, 19, 117, 83, 5, 20, 21, 87, 20, - 10, 31, 20, 21, 20, 20, 21, 31, 132, 20, - 21, 4, 35, 34, 19, 38, 20, 33, 20, 108, - 44, 39, 22, 147, 51, 3, 44, 34, 39, 44, - 119, 35, 20, 44, 39, 39, 3, 41, 42, 43, - 35, 20, 166, 38, 133, 23, 24, 31, 75, 33, - 31, 39, 33, 41, 42, 43, 23, 24, 152, 153, - 31, 20, 33, 23, 24, 92, 25, 26, 27, 28, - 29, 30, 22, 167, 168, 31, 170, 33, 172, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 23, 24, 34, 20, 34, 22, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 13, - 20, 13, 20, 37, 22, 25, 26, 27, 28, 29, - 30, 20, 32, 11, 12, 13, 33, 34, 16, 11, - 12, 13, 33, 34, 16, 32, 33, 20, 22, 20, - 20, 20, 20, 35, 20, 36, 35, 34, 34, 20, - 20, 20, 20, 38, 20, 84, 23, 20, 35, 34, - 20, 35, 35, 35, 23, 20, 31, 0, 111, 65, - 23, 35, 34, 34, 21, 23, 0, 35, 34, 31, - 31, 35, 23, 40, 23, 31, 35, 23, 23, 39, - 33, 23, 23, 31, 39, 4, 22, 22, 114, 22, - 155, -1, -1, -1, -1, -1, 50 + 17, 19, 19, 115, 20, 117, 83, 22, 20, 21, + 87, 20, 21, 5, 20, 21, 20, 21, 10, 31, + 132, 39, 20, 39, 31, 41, 42, 43, 3, 22, + 39, 108, 44, 39, 51, 44, 148, 35, 44, 3, + 44, 39, 119, 41, 42, 43, 4, 149, 23, 24, + 153, 154, 20, 34, 166, 20, 133, 34, 75, 23, + 24, 31, 164, 33, 167, 168, 34, 170, 33, 172, + 31, 20, 33, 23, 24, 92, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 20, 35, + 34, 20, 38, 22, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 13, 20, 13, 20, + 20, 22, 25, 26, 27, 28, 29, 30, 20, 32, + 23, 24, 37, 25, 26, 27, 28, 29, 30, 11, + 12, 13, 33, 34, 16, 11, 12, 13, 35, 20, + 16, 38, 33, 34, 32, 33, 20, 20, 20, 20, + 35, 35, 22, 36, 20, 34, 34, 20, 20, 20, + 35, 20, 20, 23, 84, 34, 20, 35, 35, 20, + 0, 35, 4, 38, 31, 23, 20, 0, 21, 35, + 35, 34, 34, 23, 34, 31, 31, 23, 35, 23, + 31, 40, 23, 35, 23, 23, 33, 22, 31, 111, + 39, 39, 22, 22, 156, 114, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 50, -1, -1, -1, -1, -1, -1, + 65 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" @@ -942,51 +945,51 @@ yyreduce: switch (yyn) { case 1: -#line 176 "parse.y" +#line 177 "parse.y" { ; ; break;} case 2: -#line 177 "parse.y" +#line 178 "parse.y" { ; ; break;} case 3: -#line 178 "parse.y" +#line 179 "parse.y" { ; ; break;} case 4: -#line 179 "parse.y" +#line 180 "parse.y" { ; ; break;} case 5: -#line 182 "parse.y" +#line 183 "parse.y" { Node *node = new_ccode(FALSE,yyvsp[0].cbuf,ccode_line); nodes = g_list_append(nodes,node); ; break;} case 6: -#line 186 "parse.y" +#line 187 "parse.y" { Node *node = new_ccode(TRUE,yyvsp[0].cbuf,ccode_line); nodes = g_list_append(nodes,node); ; break;} case 7: -#line 190 "parse.y" +#line 191 "parse.y" { Node *node = new_ccode(FALSE,yyvsp[0].cbuf,ccode_line); nodes = g_list_append(nodes,node); ; break;} case 8: -#line 194 "parse.y" +#line 195 "parse.y" { Node *node = new_ccode(TRUE,yyvsp[0].cbuf,ccode_line); nodes = g_list_append(nodes,node); ; break;} case 9: -#line 200 "parse.y" +#line 201 "parse.y" { ((Class *)class)->nodes = class_nodes; class_nodes = NULL; @@ -994,49 +997,49 @@ case 9: ; break;} case 10: -#line 207 "parse.y" +#line 208 "parse.y" { class = new_class(yyvsp[-2].id,yyvsp[0].id,NULL); ; break;} case 11: -#line 212 "parse.y" +#line 213 "parse.y" { ; ; break;} case 12: -#line 213 "parse.y" +#line 214 "parse.y" { ; ; break;} case 13: -#line 214 "parse.y" +#line 215 "parse.y" { ; ; break;} case 14: -#line 215 "parse.y" +#line 216 "parse.y" { ; ; break;} case 15: -#line 216 "parse.y" +#line 217 "parse.y" { ; ; break;} case 16: -#line 217 "parse.y" +#line 218 "parse.y" { ; ; break;} case 17: -#line 220 "parse.y" +#line 221 "parse.y" { - push_variable(yyvsp[-1].id,PUBLIC_SCOPE); + push_variable(yyvsp[-1].id,PUBLIC_SCOPE,yyvsp[-3].line); ; break;} case 18: -#line 223 "parse.y" +#line 224 "parse.y" { - push_variable(yyvsp[-1].id,PRIVATE_SCOPE); + push_variable(yyvsp[-1].id,PRIVATE_SCOPE,yyvsp[-3].line); ; break;} case 19: -#line 227 "parse.y" +#line 228 "parse.y" { if(strcmp(yyvsp[-6].id,"get")==0 && strcmp(yyvsp[-3].id,"set")==0) { @@ -1044,7 +1047,8 @@ case 19: g_free(yyvsp[-6].id); g_free(yyvsp[-3].id); node = new_argument(yyvsp[-8].id,yyvsp[-9].list,yyvsp[-7].id, yyvsp[-4].cbuf,yyvsp[-5].line, - yyvsp[-1].cbuf,yyvsp[-2].line); + yyvsp[-1].cbuf,yyvsp[-2].line, + yyvsp[-10].line); class_nodes = g_list_append(class_nodes,node); } else if(strcmp(yyvsp[-6].id,"set")==0 && strcmp(yyvsp[-3].id,"get")==0) { @@ -1052,7 +1056,8 @@ case 19: g_free(yyvsp[-6].id); g_free(yyvsp[-3].id); node = new_argument(yyvsp[-8].id,yyvsp[-9].list,yyvsp[-7].id, yyvsp[-1].cbuf,yyvsp[-2].line, - yyvsp[-4].cbuf,yyvsp[-5].line); + yyvsp[-4].cbuf,yyvsp[-5].line, + yyvsp[-10].line); class_nodes = g_list_append(class_nodes,node); } else { g_free(yyvsp[-8].id); g_free(yyvsp[-7].id); @@ -1066,19 +1071,21 @@ case 19: ; break;} case 20: -#line 254 "parse.y" +#line 257 "parse.y" { if(strcmp(yyvsp[-3].id,"get")==0) { Node *node; g_free(yyvsp[-3].id); node = new_argument(yyvsp[-5].id,yyvsp[-6].list,yyvsp[-4].id, - yyvsp[-1].cbuf,yyvsp[-2].line,NULL,0); + yyvsp[-1].cbuf,yyvsp[-2].line,NULL,0, + yyvsp[-7].line); class_nodes = g_list_append(class_nodes,node); } else if(strcmp(yyvsp[-3].id,"set")==0) { Node *node; g_free(yyvsp[-3].id); node = new_argument(yyvsp[-5].id,yyvsp[-6].list,yyvsp[-4].id, - NULL,0,yyvsp[-1].cbuf,yyvsp[-2].line); + NULL,0,yyvsp[-1].cbuf,yyvsp[-2].line, + yyvsp[-7].line); class_nodes = g_list_append(class_nodes,node); } else { g_free(yyvsp[-3].id); g_free(yyvsp[-5].id); @@ -1091,34 +1098,34 @@ case 20: ; break;} case 21: -#line 278 "parse.y" +#line 283 "parse.y" { yyval.list = yyvsp[-1].list; ; break;} case 22: -#line 279 "parse.y" +#line 284 "parse.y" { yyval.list = NULL; ; break;} case 23: -#line 282 "parse.y" +#line 287 "parse.y" { yyval.list = g_list_append(yyvsp[0].list,yyvsp[-2].id); ; break;} case 24: -#line 285 "parse.y" +#line 290 "parse.y" { yyval.list = g_list_append(NULL,yyvsp[0].id); ; break;} case 25: -#line 291 "parse.y" +#line 296 "parse.y" { Node *node = new_type(0,yyvsp[0].id); typestack = g_list_prepend(typestack,node); ; break;} case 26: -#line 295 "parse.y" +#line 300 "parse.y" { Node *node = new_type(stars,yyvsp[-1].id); stars = 0; @@ -1126,178 +1133,162 @@ case 26: ; break;} case 27: -#line 302 "parse.y" +#line 307 "parse.y" { yyval.id = g_strconcat("unsigned ",yyvsp[0].id,NULL); ; break;} case 28: -#line 305 "parse.y" +#line 310 "parse.y" { yyval.id = g_strconcat("signed ",yyvsp[0].id,NULL); ; break;} case 29: -#line 308 "parse.y" +#line 313 "parse.y" { yyval.id = g_strdup(yyvsp[0].id); ; break;} case 30: -#line 311 "parse.y" +#line 316 "parse.y" { yyval.id = g_strdup("unsigned char"); ; break;} case 31: -#line 314 "parse.y" +#line 319 "parse.y" { yyval.id = g_strdup("signed char"); ; break;} case 32: -#line 317 "parse.y" +#line 322 "parse.y" { yyval.id = g_strdup("char"); ; break;} case 33: -#line 320 "parse.y" +#line 325 "parse.y" { yyval.id = g_strdup("double"); ; break;} case 34: -#line 323 "parse.y" +#line 328 "parse.y" { yyval.id = g_strdup("float"); ; break;} case 35: -#line 326 "parse.y" +#line 331 "parse.y" { yyval.id = yyvsp[0].id; ; break;} case 36: -#line 329 "parse.y" +#line 334 "parse.y" { yyval.id = g_strconcat(yyvsp[-1].id,yyvsp[0].id,NULL); g_free(yyvsp[0].id); ; break;} case 37: -#line 333 "parse.y" +#line 338 "parse.y" { yyval.id = yyvsp[0].id; ; break;} case 38: -#line 336 "parse.y" +#line 341 "parse.y" { yyval.id = g_strdup("void"); ; break;} case 39: -#line 341 "parse.y" +#line 346 "parse.y" { yyval.id = "long int"; ; break;} case 40: -#line 344 "parse.y" +#line 349 "parse.y" { yyval.id = "long"; ; break;} case 41: -#line 347 "parse.y" +#line 352 "parse.y" { yyval.id = "short int"; ; break;} case 42: -#line 350 "parse.y" +#line 355 "parse.y" { yyval.id = "short"; ; break;} case 43: -#line 353 "parse.y" +#line 358 "parse.y" { yyval.id = "int"; ; break;} case 44: -#line 358 "parse.y" +#line 363 "parse.y" { yyval.id = "enum "; ; break;} case 45: -#line 361 "parse.y" +#line 366 "parse.y" { yyval.id = "union "; ; break;} case 46: -#line 364 "parse.y" +#line 369 "parse.y" { yyval.id = "struct "; ; break;} case 47: -#line 369 "parse.y" +#line 374 "parse.y" { stars++; ; break;} case 48: -#line 370 "parse.y" +#line 375 "parse.y" { stars++; ; break;} case 49: -#line 373 "parse.y" +#line 378 "parse.y" { gtktypes = g_list_prepend(gtktypes,yyvsp[-3].id); ; break;} case 50: -#line 378 "parse.y" +#line 383 "parse.y" { gtktypes = g_list_append(gtktypes,yyvsp[0].id); ; break;} case 51: -#line 381 "parse.y" +#line 386 "parse.y" { gtktypes = g_list_append(gtktypes,yyvsp[0].id); ; break;} case 52: -#line 387 "parse.y" -{ - int sigtype = SIGNAL_LAST_METHOD; - if(strcmp(yyvsp[-9].id,"first")==0) - sigtype = SIGNAL_FIRST_METHOD; - else if(strcmp(yyvsp[-9].id,"last")==0) - sigtype = SIGNAL_LAST_METHOD; - else { - yyerror(_("signal must be 'first' or 'last'")); - g_free(yyvsp[-9].id); - YYERROR; - } - g_free(yyvsp[-9].id); - - if(!has_this) { - yyerror(_("signal without 'this' as " - "first parameter")); - YYERROR; - } - push_function(sigtype,NULL, - yyvsp[-6].id, yyvsp[-2].id, yyvsp[0].cbuf,yyvsp[-10].line,yyvsp[-1].line); - ; +#line 391 "parse.y" +{ yyval.cbuf=yyvsp[0].cbuf; ; break;} case 53: -#line 408 "parse.y" +#line 392 "parse.y" +{ yyval.cbuf = NULL; ; + break;} +case 54: +#line 396 "parse.y" { int sigtype = SIGNAL_LAST_METHOD; if(strcmp(yyvsp[-8].id,"first")==0) @@ -1310,76 +1301,63 @@ case 53: YYERROR; } g_free(yyvsp[-8].id); - if(!has_this) { - yyerror(_("signal without 'this' as " + + if(!has_self) { + yyerror(_("signal without 'self' as " "first parameter")); YYERROR; } - push_function(sigtype, NULL, - yyvsp[-5].id, yyvsp[-1].id, NULL,yyvsp[-9].line,0); + push_function(sigtype,NULL, + yyvsp[-5].id, yyvsp[-1].id, yyvsp[0].cbuf,yyvsp[-9].line,ccode_line); ; break;} -case 54: -#line 428 "parse.y" +case 55: +#line 417 "parse.y" { - if(!has_this) { - yyerror(_("signal without 'this' as " + if(!has_self) { + yyerror(_("signal without 'self' as " "first parameter")); YYERROR; } push_function(SIGNAL_LAST_METHOD, NULL, - yyvsp[-6].id, yyvsp[-2].id, yyvsp[0].cbuf,yyvsp[-9].line,yyvsp[-1].line); + yyvsp[-5].id, yyvsp[-1].id, yyvsp[0].cbuf,yyvsp[-8].line,ccode_line); ; break;} -case 55: -#line 437 "parse.y" +case 56: +#line 426 "parse.y" { - if(!has_this) { - yyerror(_("signal without 'this' as " + if(!has_self) { + yyerror(_("virtual method without 'self' as " "first parameter")); YYERROR; } - push_function(SIGNAL_LAST_METHOD, NULL, yyvsp[-5].id, - yyvsp[-1].id, NULL,yyvsp[-8].line,0); - ; - break;} -case 56: -#line 446 "parse.y" -{ - push_function(VIRTUAL_METHOD, NULL, yyvsp[-6].id, - yyvsp[-2].id, yyvsp[0].cbuf,yyvsp[-8].line,yyvsp[-1].line); - ; - break;} -case 57: -#line 450 "parse.y" -{ push_function(VIRTUAL_METHOD, NULL, yyvsp[-5].id, - yyvsp[-1].id, NULL,yyvsp[-7].line,0); + yyvsp[-1].id, yyvsp[0].cbuf,yyvsp[-7].line,ccode_line); ; break;} -case 58: -#line 454 "parse.y" +case 57: +#line 435 "parse.y" { push_function(OVERRIDE_METHOD, yyvsp[-9].id, yyvsp[-6].id, yyvsp[-2].id, yyvsp[0].cbuf,yyvsp[-11].line,yyvsp[-1].line); ; break;} -case 59: -#line 458 "parse.y" +case 58: +#line 439 "parse.y" { push_function(PUBLIC_SCOPE, NULL, yyvsp[-6].id, yyvsp[-2].id, yyvsp[0].cbuf,yyvsp[-8].line,yyvsp[-1].line); ; break;} -case 60: -#line 462 "parse.y" +case 59: +#line 443 "parse.y" { push_function(PRIVATE_SCOPE, NULL, yyvsp[-6].id, yyvsp[-2].id, yyvsp[0].cbuf,yyvsp[-8].line,yyvsp[-1].line); ; break;} -case 61: -#line 466 "parse.y" +case 60: +#line 447 "parse.y" { if(strcmp(yyvsp[-4].id,"init")==0) { push_init_arg(yyvsp[-2].id,FALSE); @@ -1397,8 +1375,8 @@ case 61: } ; break;} -case 62: -#line 482 "parse.y" +case 61: +#line 463 "parse.y" { if(strcmp(yyvsp[-5].id,"init")==0) { push_init_arg(yyvsp[-3].id,FALSE); @@ -1419,35 +1397,40 @@ case 62: } ; break;} -case 63: -#line 503 "parse.y" +case 62: +#line 484 "parse.y" { yyval.id = yyvsp[0].id; ; break;} -case 64: -#line 504 "parse.y" +case 63: +#line 485 "parse.y" { yyval.id = (yyvsp[0].cbuf)->str; g_string_free(yyvsp[0].cbuf,FALSE); ; break;} -case 65: -#line 508 "parse.y" +case 64: +#line 489 "parse.y" { ; ; break;} -case 66: -#line 509 "parse.y" +case 65: +#line 490 "parse.y" { yyval.id = NULL; ; break;} -case 67: -#line 514 "parse.y" -{ has_this = FALSE; ; +case 66: +#line 495 "parse.y" +{ has_self = FALSE; ; break;} -case 68: -#line 515 "parse.y" -{ - has_this = TRUE; - if(strcmp(yyvsp[0].id,"this")==0) - push_this(yyvsp[0].id); +case 67: +#line 496 "parse.y" +{ + has_self = TRUE; + if(strcmp(yyvsp[0].id,"this")==0) { + push_self(yyvsp[0].id); + print_error(TRUE,_("Use of 'this' is " + "depreciated, use 'self' " + "instead"),line_no); + } else if(strcmp(yyvsp[0].id,"self")==0) + push_self(yyvsp[0].id); else { g_free(yyvsp[0].id); yyerror(_("parse error")); @@ -1455,12 +1438,17 @@ case 68: } ; break;} -case 69: -#line 525 "parse.y" -{ - has_this = TRUE; - if(strcmp(yyvsp[-2].id,"this")==0) - push_this(yyvsp[-2].id); +case 68: +#line 511 "parse.y" +{ + has_self = TRUE; + if(strcmp(yyvsp[-2].id,"this")==0) { + push_self(yyvsp[-2].id); + print_error(TRUE,_("Use of 'this' is " + "depreciated, use 'self' " + "instead"),line_no); + } else if(strcmp(yyvsp[-2].id,"self")==0) + push_self(yyvsp[-2].id); else { g_free(yyvsp[-2].id); yyerror(_("parse error")); @@ -1468,26 +1456,26 @@ case 69: } ; break;} +case 69: +#line 526 "parse.y" +{ has_self = FALSE; ; + break;} case 70: -#line 535 "parse.y" -{ has_this = FALSE; ; +#line 529 "parse.y" +{ ; ; break;} case 71: -#line 538 "parse.y" +#line 530 "parse.y" { ; ; break;} case 72: -#line 539 "parse.y" -{ ; ; - break;} -case 73: -#line 542 "parse.y" +#line 533 "parse.y" { push_funcarg(yyvsp[0].id); ; break;} -case 74: -#line 545 "parse.y" +case 73: +#line 536 "parse.y" { if(strcmp(yyvsp[-2].id,"check")!=0) { yyerror(_("parse error")); @@ -1497,16 +1485,16 @@ case 74: push_funcarg(yyvsp[-4].id); ; break;} -case 75: -#line 555 "parse.y" +case 74: +#line 546 "parse.y" { ; ; break;} -case 76: -#line 556 "parse.y" +case 75: +#line 547 "parse.y" { ; ; break;} -case 77: -#line 559 "parse.y" +case 76: +#line 550 "parse.y" { if(strcmp(yyvsp[0].id,"type")==0) { Node *node = new_check(TYPE_CHECK,NULL); @@ -1521,61 +1509,61 @@ case 77: g_free(yyvsp[0].id); ; break;} -case 78: -#line 572 "parse.y" +case 77: +#line 563 "parse.y" { Node *node = new_check(GT_CHECK,yyvsp[0].id); checks = g_list_append(checks,node); ; break;} -case 79: -#line 576 "parse.y" +case 78: +#line 567 "parse.y" { Node *node = new_check(LT_CHECK,yyvsp[0].id); checks = g_list_append(checks,node); ; break;} -case 80: -#line 580 "parse.y" +case 79: +#line 571 "parse.y" { Node *node = new_check(GE_CHECK,yyvsp[0].id); checks = g_list_append(checks,node); ; break;} -case 81: -#line 584 "parse.y" +case 80: +#line 575 "parse.y" { Node *node = new_check(LE_CHECK,yyvsp[0].id); checks = g_list_append(checks,node); ; break;} -case 82: -#line 588 "parse.y" +case 81: +#line 579 "parse.y" { Node *node = new_check(EQ_CHECK,yyvsp[0].id); checks = g_list_append(checks,node); ; break;} -case 83: -#line 592 "parse.y" +case 82: +#line 583 "parse.y" { Node *node = new_check(NE_CHECK,yyvsp[0].id); checks = g_list_append(checks,node); ; break;} -case 84: -#line 598 "parse.y" +case 83: +#line 589 "parse.y" { yyval.id = yyvsp[0].id; ; break;} -case 85: -#line 599 "parse.y" +case 84: +#line 590 "parse.y" { yyval.id = g_strconcat("-",yyvsp[0].id,NULL); g_free(yyvsp[0].id); ; break;} -case 86: -#line 603 "parse.y" +case 85: +#line 594 "parse.y" { yyval.id = yyvsp[0].id; ; break;} } @@ -1776,5 +1764,5 @@ yyerrhandle: yystate = yyn; goto yynewstate; } -#line 606 "parse.y" +#line 597 "parse.y"