You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2011/10/25 08:45:27 UTC

[lucy-commits] svn commit: r1188534 - /incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y

Author: marvin
Date: Tue Oct 25 06:45:26 2011
New Revision: 1188534

URL: http://svn.apache.org/viewvc?rev=1188534&view=rev
Log:
Make %type directives more specific.

Modified:
    incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y

Modified: incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y?rev=1188534&r1=1188533&r2=1188534&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y Tue Oct 25 06:45:26 2011
@@ -52,10 +52,11 @@ static const char KW_DOUBLE[]   = "doubl
 static const char KW_VOID[]     = "void";
 static const char KW_VA_LIST[]  = "va_list";
 
-static CFCBase*
-S_start_class(CFCParser *state, CFCBase *docucomment, const char *exposure,
-            const char *declaration_modifier_list, const char *class_name,
-            const char *class_cnick, const char *inheritance) {
+static CFCClass*
+S_start_class(CFCParser *state, CFCDocuComment *docucomment,
+              const char *exposure, const char *declaration_modifier_list,
+              const char *class_name, const char *class_cnick,
+              const char *inheritance) {
     const char *source_class = NULL; /* FIXME derive from file. */
     int is_final = false;
     int is_inert = false;
@@ -65,16 +66,14 @@ S_start_class(CFCParser *state, CFCBase 
     }
     CFCParser_set_class_name(state, class_name);
     CFCParser_set_class_cnick(state, class_cnick);
-    return (CFCBase*)CFCClass_create(CFCParser_get_parcel(), exposure,
-                                     class_name, class_cnick, NULL,
-                                     (CFCDocuComment*)docucomment,
-                                     source_class, inheritance, is_final,
-                                     is_inert);
+    return CFCClass_create(CFCParser_get_parcel(), exposure, class_name,
+                           class_cnick, NULL, docucomment, source_class,
+                           inheritance, is_final, is_inert);
 }
 
-static CFCBase*
+static CFCVariable*
 S_new_var(CFCParser *state, const char *exposure, const char *modifiers,
-          CFCBase *type, const char *name) {
+          CFCType *type, const char *name) {
     int inert = false;
     if (modifiers) {
         if (strcmp(modifiers, "inert") != 0) {
@@ -82,16 +81,16 @@ S_new_var(CFCParser *state, const char *
         }
         inert = true;
     }
-    return (CFCBase*)CFCVariable_new(CFCParser_get_parcel(), exposure, 
-                                     CFCParser_get_class_name(state),
-                                     CFCParser_get_class_cnick(state), name,
-                                     (CFCType*)type, inert);
+    return CFCVariable_new(CFCParser_get_parcel(), exposure, 
+                           CFCParser_get_class_name(state),
+                           CFCParser_get_class_cnick(state), name, type,
+                           inert);
 }
 
 static CFCBase*
-S_new_sub(CFCParser *state, CFCBase *docucomment, 
+S_new_sub(CFCParser *state, CFCDocuComment *docucomment, 
           const char *exposure, const char *declaration_modifier_list,
-          CFCBase *type, const char *name, CFCBase *param_list) {
+          CFCType *type, const char *name, CFCParamList *param_list) {
     CFCParcel  *parcel      = CFCParser_get_parcel();
     const char *class_name  = CFCParser_get_class_name(state);
     const char *class_cnick = CFCParser_get_class_cnick(state);
@@ -111,21 +110,17 @@ S_new_sub(CFCParser *state, CFCBase *doc
     /* If "inert", it's a function, otherwise it's a method. */
     if (is_inert) {
         return (CFCBase*)CFCFunction_new(parcel, exposure, class_name,
-                                         class_cnick, name, (CFCType*)type,
-                                         (CFCParamList*)param_list,
-                                         (CFCDocuComment*)docucomment,
-                                         is_inline);
+                                         class_cnick, name, type, param_list,
+                                         docucomment, is_inline);
     }
     else {
         return (CFCBase*)CFCMethod_new(parcel, exposure, class_name,
-                                       class_cnick, name,(CFCType*)type,
-                                       (CFCParamList*)param_list,
-                                       (CFCDocuComment*)docucomment, is_final,
-                                       is_abstract);
+                                       class_cnick, name, type, param_list,
+                                       docucomment, is_final, is_abstract);
     }
 }
 
-static CFCBase*
+static CFCType*
 S_new_type(CFCParser *state, int flags, const char *type_name,
            const char *asterisk_postfix, const char *array_postfix) {
     CFCType *type = NULL;
@@ -203,7 +198,7 @@ S_new_type(CFCParser *state, int flags, 
         type = composite;
     }
 
-    return (CFCBase*)type;
+    return type;
 }
 
 } /* End include block. */
@@ -218,20 +213,20 @@ S_new_type(CFCParser *state, int flags, 
 }
 
 %type result                            {CFCBase*}
-%type file                              {CFCBase*}
+%type file                              {CFCFile*}
 %type major_block                       {CFCBase*}
-%type parcel_definition                 {CFCBase*}
-%type class_declaration                 {CFCBase*}
-%type class_head                        {CFCBase*}
-%type class_defs                        {CFCBase*}
-%type var_declaration_statement         {CFCBase*}
+%type parcel_definition                 {CFCParcel*}
+%type class_declaration                 {CFCClass*}
+%type class_head                        {CFCClass*}
+%type class_defs                        {CFCClass*}
+%type var_declaration_statement         {CFCVariable*}
 %type subroutine_declaration_statement  {CFCBase*}
-%type type                              {CFCBase*}
-%type param_variable                    {CFCBase*}
-%type param_list                        {CFCBase*}
-%type param_list_elems                  {CFCBase*}
-%type docucomment                       {CFCBase*}
-%type cblock                            {CFCBase*}
+%type type                              {CFCType*}
+%type param_variable                    {CFCVariable*}
+%type param_list                        {CFCParamList*}
+%type param_list_elems                  {CFCParamList*}
+%type docucomment                       {CFCDocuComment*}
+%type cblock                            {CFCCBlock*}
 %type void_type_specifier               {const char*}
 %type va_list_specifier                 {const char*}
 %type float_type_specifier              {const char*}
@@ -262,30 +257,30 @@ S_new_type(CFCParser *state, int flags, 
 %destructor type_qualifier_list               { }
 
 /* Temporary. */
-result ::= type(A).                      { CFCParser_set_result(state, A); }
-result ::= param_list(A).                { CFCParser_set_result(state, A); }
-result ::= param_variable(A).            { CFCParser_set_result(state, A); }
-result ::= docucomment(A).               { CFCParser_set_result(state, A); }
-result ::= parcel_definition(A).         { CFCParser_set_result(state, A); }
-result ::= cblock(A).                    { CFCParser_set_result(state, A); }
-result ::= var_declaration_statement(A). { CFCParser_set_result(state, A); }
-result ::= subroutine_declaration_statement(A). { CFCParser_set_result(state, A); }
-result ::= class_declaration(A).         { CFCParser_set_result(state, A); }
-result ::= file(A).                      { CFCParser_set_result(state, A); }
+result ::= type(A).                             { CFCParser_set_result(state, (CFCBase*)A); }
+result ::= param_list(A).                       { CFCParser_set_result(state, (CFCBase*)A); }
+result ::= param_variable(A).                   { CFCParser_set_result(state, (CFCBase*)A); }
+result ::= docucomment(A).                      { CFCParser_set_result(state, (CFCBase*)A); }
+result ::= parcel_definition(A).                { CFCParser_set_result(state, (CFCBase*)A); }
+result ::= cblock(A).                           { CFCParser_set_result(state, (CFCBase*)A); }
+result ::= var_declaration_statement(A).        { CFCParser_set_result(state, (CFCBase*)A); }
+result ::= subroutine_declaration_statement(A). { CFCParser_set_result(state, (CFCBase*)A); }
+result ::= class_declaration(A).                { CFCParser_set_result(state, (CFCBase*)A); }
+result ::= file(A).                             { CFCParser_set_result(state, (CFCBase*)A); }
 
 file(A) ::= FILE_START. /* Pseudo token, not passed by lexer. */
 {
-    A = (CFCBase*)CFCFile_new(CFCParser_get_source_class(state));
+    A = CFCFile_new(CFCParser_get_source_class(state));
 }
 file(A) ::= file(B) major_block(C).
 {
     A = B;
-    CFCFile_add_block((CFCFile*)A, C);
+    CFCFile_add_block(A, C);
 }
 
-major_block(A) ::= class_declaration(B). { A = B; }
-major_block(A) ::= cblock(B).            { A = B; }
-major_block(A) ::= parcel_definition(B). { A = B; }
+major_block(A) ::= class_declaration(B). { A = (CFCBase*)B; }
+major_block(A) ::= cblock(B).            { A = (CFCBase*)B; }
+major_block(A) ::= parcel_definition(B). { A = (CFCBase*)B; }
 
 parcel_definition(A) ::= exposure_specifier(B) qualified_id(C) SEMICOLON.
 {
@@ -297,8 +292,8 @@ parcel_definition(A) ::= exposure_specif
          * declaration and exposure specifier). */
          CFCUtil_die("A syntax error was detected when parsing '%s'", B);
     }
-    A = (CFCBase*)CFCParcel_singleton(C, NULL);
-    CFCParser_set_parcel((CFCParcel*)A);
+    A = CFCParcel_singleton(C, NULL);
+    CFCParser_set_parcel(A);
 }
 
 parcel_definition(A) ::= exposure_specifier(B) qualified_id(C) cnick(D) SEMICOLON.
@@ -306,8 +301,8 @@ parcel_definition(A) ::= exposure_specif
     if (strcmp(B, "parcel") != 0) {
          CFCUtil_die("A syntax error was detected when parsing '%s'", B);
     }
-    A = (CFCBase*)CFCParcel_singleton(C, D);
-    CFCParser_set_parcel((CFCParcel*)A);
+    A = CFCParcel_singleton(C, D);
+    CFCParser_set_parcel(A);
 }
 
 class_declaration(A) ::= class_defs(B) RIGHT_CURLY_BRACE.
@@ -353,7 +348,7 @@ class_head(A) ::=                       
 class_head(A) ::= class_head(B) COLON identifier(C).
 {
     A = B;
-    CFCClass_add_attribute((CFCClass*)A, C, "1");
+    CFCClass_add_attribute(A, C, "1");
 }
 
 class_defs(A) ::= class_head(B) LEFT_CURLY_BRACE.
@@ -363,21 +358,21 @@ class_defs(A) ::= class_head(B) LEFT_CUR
 class_defs(A) ::= class_defs(B) var_declaration_statement(C).
 {
     A = B;
-    if (CFCVariable_inert((CFCVariable*)C)) {
-        CFCClass_add_inert_var((CFCClass*)A, (CFCVariable*)C);
+    if (CFCVariable_inert(C)) {
+        CFCClass_add_inert_var(A, C);
     }
     else {
-        CFCClass_add_member_var((CFCClass*)A, (CFCVariable*)C);
+        CFCClass_add_member_var(A, C);
     }
 }
 class_defs(A) ::= class_defs(B) subroutine_declaration_statement(C).
 {
     A = B;
     if (strcmp(CFCBase_get_cfc_class(C), "Clownfish::Function") == 0) {
-        CFCClass_add_function((CFCClass*)A, (CFCFunction*)C);
+        CFCClass_add_function(A, (CFCFunction*)C);
     }
     else {
-        CFCClass_add_method((CFCClass*)A, (CFCMethod*)C);
+        CFCClass_add_method(A, (CFCMethod*)C);
     }
 }
 
@@ -607,7 +602,7 @@ param_variable(A) ::= type(B) declarator
 
 param_list(A) ::= LEFT_PAREN RIGHT_PAREN.
 {
-    A = (CFCBase*)CFCParamList_new(false);
+    A = CFCParamList_new(false);
 }
 param_list(A) ::= LEFT_PAREN param_list_elems(B) RIGHT_PAREN.
 {
@@ -616,32 +611,32 @@ param_list(A) ::= LEFT_PAREN param_list_
 param_list(A) ::= LEFT_PAREN param_list_elems(B) COMMA ELLIPSIS RIGHT_PAREN.
 {
     A = B;
-    CFCParamList_set_variadic((CFCParamList*)A, true);
+    CFCParamList_set_variadic(A, true);
 }
 param_list_elems(A) ::= param_list_elems(B) COMMA param_variable(C).
 {
     A = B;
-    CFCParamList_add_param((CFCParamList*)A, (CFCVariable*)C, NULL);
+    CFCParamList_add_param(A, C, NULL);
 }
 param_list_elems(A) ::= param_list_elems(B) COMMA param_variable(C) EQUALS scalar_constant(D).
 {
     A = B;
-    CFCParamList_add_param((CFCParamList*)A, (CFCVariable*)C, D);
+    CFCParamList_add_param(A, C, D);
 }
 param_list_elems(A) ::= param_variable(B).
 {
-    A = (CFCBase*)CFCParamList_new(false);
-    CFCParamList_add_param((CFCParamList*)A, (CFCVariable*)B, NULL);
+    A = CFCParamList_new(false);
+    CFCParamList_add_param(A, B, NULL);
 }
 param_list_elems(A) ::= param_variable(B) EQUALS scalar_constant(C).
 {
-    A = (CFCBase*)CFCParamList_new(false);
-    CFCParamList_add_param((CFCParamList*)A, (CFCVariable*)B, C);
+    A = CFCParamList_new(false);
+    CFCParamList_add_param(A, B, C);
 }
 
 docucomment(A) ::= DOCUCOMMENT.
 {
-    A = (CFCBase*)CFCDocuComment_parse(CFCParser_get_text(state));
+    A = CFCDocuComment_parse(CFCParser_get_text(state));
 }
 
 identifier(A) ::= IDENTIFIER.
@@ -671,7 +666,7 @@ cnick(A) ::= CNICK identifier(B).
 
 cblock(A) ::= CBLOCK_START blob(B) CBLOCK_CLOSE.
 {
-    A = (CFCBase*)CFCCBlock_new(B);
+    A = CFCCBlock_new(B);
 }
 
 blob(A) ::= BLOB.