X-Git-Url: https://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/3e833eea9cb9822f04c639e143212c4b6f7940d4..6bec711e14babb0d6388754f41834036f22a3ef1:/src/parse.y diff --git a/src/parse.y b/src/parse.y index b8792bb..5c8cc98 100644 --- a/src/parse.y +++ b/src/parse.y @@ -92,9 +92,10 @@ yyerror(char *str) char *out=NULL; char *p; - if(strcmp(yytext,"\n")==0) { - out=g_strconcat("Error: ",str," before newline",NULL); - } else if(yytext[0]=='\0') { + if (strcmp (yytext, "\n") == 0 || + strcmp (yytext, "\r") == 0) { + out = g_strconcat ("Error: ", str, " before end of line", NULL); + } else if (yytext[0] == '\0') { out=g_strconcat("Error: ", str, " at end of input", NULL); } else { char *tmp = g_strdup(yytext); @@ -156,7 +157,11 @@ push_function (int scope, int method, char *oid, char *id, g_assert(scope != CLASS_SCOPE); - if(method == INIT_METHOD || method == CLASS_INIT_METHOD) { + if(method == INIT_METHOD || + method == CLASS_INIT_METHOD || + method == CONSTRUCTOR_METHOD || + method == DISPOSE_METHOD || + method == FINALIZE_METHOD) { type = (Type *)node_new (TYPE_NODE, "name", "void", NULL); @@ -688,7 +693,7 @@ ensure_property (void) %token SIGNED UNSIGNED LONG SHORT INT FLOAT DOUBLE CHAR %token TOKEN NUMBER TYPETOKEN ARRAY_DIM SINGLE_CHAR -%token CCODE ADCODE HTCODE PHCODE HCODE ACODE ATCODE STRING +%token CCODE CTCODE ADCODE HTCODE PHCODE HCODE ACODE ATCODE STRING %token PUBLIC PRIVATE PROTECTED CLASSWIDE PROPERTY ARGUMENT %token VIRTUAL SIGNAL OVERRIDE %token NICK BLURB MAXIMUM MINIMUM DEFAULT_VALUE ERROR FLAGS TYPE @@ -765,6 +770,15 @@ ccode: CCODE { nodes = g_list_append(nodes,node); g_string_free($1,FALSE); } + | CTCODE { + Node *node = node_new (CCODE_NODE, + "cctype", CT_CCODE, + "cbuf:steal", ($1)->str, + "line_no", ccode_line, + NULL); + nodes = g_list_append(nodes,node); + g_string_free($1,FALSE); + } ; ccodes: ccodes ccode { ; }