[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/devtools/kdevelop-pg-qt/kdev-pg
From:       Jonathan Schmidt-Dominé <devel () the-user ! org>
Date:       2009-12-06 17:04:00
Message-ID: 1260119040.657560.9735.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1059445 by schmidt-domine:

Now you can use [: /* Code */ :] at the beginning of rules.


 M  +1 -0      kdev-pg-ast.h  
 M  +1 -1      kdev-pg-clone-tree.cpp  
 M  +2 -0      kdev-pg-code-gen.cpp  
 M  +8 -8      kdev-pg-parser.yy  
 M  +2 -1      kdev-pg.cpp  
 M  +1 -1      kdev-pg.h  


--- trunk/playground/devtools/kdevelop-pg-qt/kdev-pg/kdev-pg-ast.h #1059444:1059445
@@ -220,6 +220,7 @@
     SymbolItem *mSymbol;
     VariableDeclarationItem *mDeclarations;
     QString mCode;
+    QString mPreCode;
   };
 
 } // namespace model
--- trunk/playground/devtools/kdevelop-pg-qt/kdev-pg/kdev-pg-clone-tree.cpp #1059444:1059445
@@ -111,7 +111,7 @@
   Model::Node *item = mTemps.top();
   mTemps.pop();
 
-  mTemps.push(KDevPG::evolve(item, node->mSymbol, node->mDeclarations, node->mCode));
+  mTemps.push(KDevPG::evolve("", item, node->mSymbol, node->mDeclarations, node->mCode));
 }
 
 void CloneTree::visitTryCatch(Model::TryCatchItem *node)
--- trunk/playground/devtools/kdevelop-pg-qt/kdev-pg/kdev-pg-code-gen.cpp #1059444:1059445
@@ -290,6 +290,8 @@
 
 void CodeGenerator::visitEvolve(Model::EvolveItem *node)
 {
+  out << node->mPreCode;
+
   out << "if (";
 
   Model::ConditionItem *cond = nodeCast<Model::ConditionItem*>(node->mItem);
--- trunk/playground/devtools/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy #1059444:1059445
@@ -190,18 +190,18 @@
     ;
 
 item
-    : option_item T_ARROW T_IDENTIFIER T_CODE '[' variableDeclarations ']'
+    : code_opt option_item T_ARROW T_IDENTIFIER T_CODE '[' variableDeclarations ']'
         {
-          $$ = KDevPG::evolve($1, KDevPG::globalSystem.pushSymbol($3),
-                          (KDevPG::Model::VariableDeclarationItem*) $6, $4);
+          $$ = KDevPG::evolve($1, $2, KDevPG::globalSystem.pushSymbol($4),
+                          (KDevPG::Model::VariableDeclarationItem*) $7, $5);
         }
-    | option_item T_ARROW T_IDENTIFIER '[' variableDeclarations ']' code_opt
+    | code_opt option_item T_ARROW T_IDENTIFIER '[' variableDeclarations ']' code_opt
         {
-          $$ = KDevPG::evolve($1, KDevPG::globalSystem.pushSymbol($3),
-                          (KDevPG::Model::VariableDeclarationItem*) $5, $7);
+          $$ = KDevPG::evolve($1, $2, KDevPG::globalSystem.pushSymbol($4),
+                          (KDevPG::Model::VariableDeclarationItem*) $6, $8);
         }
-    | option_item T_ARROW T_IDENTIFIER code_opt
-        { $$ = KDevPG::evolve($1, KDevPG::globalSystem.pushSymbol($3), 0, $4); }
+    | code_opt option_item T_ARROW T_IDENTIFIER code_opt
+        { $$ = KDevPG::evolve($1, $2, KDevPG::globalSystem.pushSymbol($4), 0, $5); }
     ;
 
 code_opt
--- trunk/playground/devtools/kdevelop-pg-qt/kdev-pg/kdev-pg.cpp #1059444:1059445
@@ -81,7 +81,7 @@
 }
 
 Model::EvolveItem *evolve(
-    Model::Node *item, Model::SymbolItem *symbol,
+    const QString& preCode, Model::Node *item, Model::SymbolItem *symbol,
     Model::VariableDeclarationItem *declarations, const QString& code)
 {
   Model::EvolveItem *node = createNode<Model::EvolveItem>();
@@ -89,6 +89,7 @@
   node->mSymbol = symbol;
   node->mDeclarations = declarations;
   node->mCode = code;
+  node->mPreCode = preCode;
   return node;
 }
 
--- trunk/playground/devtools/kdevelop-pg-qt/kdev-pg/kdev-pg.h #1059444:1059445
@@ -43,7 +43,7 @@
   Model::AlternativeItem *alternative(Model::Node *left, Model::Node *right);
   Model::ConsItem *cons(Model::Node *left, Model::Node *right);
   Model::EvolveItem *evolve(
-      Model::Node *item, Model::SymbolItem *symbol,
+      const QString& preCode, Model::Node *item, Model::SymbolItem *symbol,
       Model::VariableDeclarationItem *declarations, const QString& code
   );
   Model::TryCatchItem *tryCatch(Model::Node *try_item, Model::Node *catch_item);
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic