{
     switch (t->getTypeID())
     {
-      case aeb::lds::Type::IntegerTyID : t->printNative(os); break;
       case aeb::lds::Type::ArrayTyID  : t->printNative(os); break;
+        os<<"char *";
+      break;
+      case aeb::lds::Type::IntegerTyID : t->printNative(os); break;
       default:
         os<<"long";
     }
             ; vit != m_Variables.end()
             ; ++vit)
     {
+      aeb::lds::GlobalVariable *V = vit->second;
+      if (V->getInitializer() != NULL )
+      {
+        switch (V->getType()->getTypeID())
+        {
+          case aeb::lds::Type::ArrayTyID  : 
+            os<<"  m_Globals["<<vit->first<<"].set_String(\""<<V->getInitializer()->getName().c_str()<<"\");\n";
+          break;
+          case aeb::lds::Type::IntegerTyID :
+          {
+            aeb::lds::ConstantInt *c = reinterpret_cast<aeb::lds::ConstantInt *>(V->getInitializer()); 
+            os<<"  m_Globals["<<vit->first<<"].set_Integer("<<c->getValue()<<");\n";
+          }
+          break;
+          default:
+            os<<"  m_Globals["<<vit->first<<"].set_Integer("<<V->getInitializer()<<");\n";
+        }
+      }
     }
     os<<"}"<<std::endl;
 }
        ; ait  != m_Variables.end()
        ; ++ait , ++counter ) 
   {
+    aeb::lds::GlobalVariable *V = ait->second;
+    if (V->isConstant())
+    {
+      act<<"/* "<<ait->first<<" "<<counter<<" is constant */\n"; 
+    }
     act<<"#define "<<ait->first<<" "<<counter<<"\n"; 
   }
   act<<"#endif\n";
 
        yylval->expr = new AST::StringLiteral(yytext,NULL);    \
        return x;                                              \
      }                                      
-#define CHAINE_TOK(x) { AST::StringLiteral *s = new AST::StringLiteral(string_begin,NULL); \
-                        yylval->expr = s;                                                  \
+#define CHAINE_TOK(x) { char k = *(yytext ); *(yytext )='\0';       \
+                        AST::StringLiteral *s = new AST::StringLiteral(string_begin,NULL); \
+                        yylval->expr  = s;                                                 \
+                        *(yytext )    = k;                                                 \
                         s->isConstantArray = true; return x; }
 
 #define NUM_TOK(x) { yylval->num = atol(yytext); return x; }
 #else
 #define TOK(x) { return x; }
 #define STR_TOK(x) { yylval->expr = new AST::StringLiteral(yytext,NULL); return x; }
-#define CHAINE_TOK(x) { AST::StringLiteral *s = new AST::StringLiteral(string_begin,NULL); \
+#define CHAINE_TOK(x) { char k = *(yytext) ; *(yytext) = '\0'; \
+                        AST::StringLiteral *s = new AST::StringLiteral(string_begin,NULL); \
                         yylval->expr = s;                                                  \
+                        *yytext = k;                                                       \
                         s->isConstantArray = true; return x; }
 #define NUM_TOK(x) { yylval->num = atol(yytext); return x; }
 #endif
 
 "'" {
   BEGIN(CHARSTRING);
-  string_begin = yytext;
+  string_begin = yytext + 1 ;
 }
 
 %{ /* COMMENT */ 
 
 
 %name-prefix="lds_"
 %pure-parser
+// Needs changes if setup
+//%define api.prefix {lds_}
+//%define api.pure
 
 %lex-param {yyscan_t *scanner}
 %parse-param {yyscan_t scanner}
   | variable_names sort T_ASSIGN expression {
     AST::Type *sort = dynamic_cast<AST::Type *>($<typ>2);
     /* Be sure expression is a constant expression or else exit */
-    LDS_LOG_INFO("variables_sort: TODO add initExpression");
+    //LDS_LOG_ERROR("variables_sort: TODO add initExpression");
     if (sort != NULL) 
     { 
       /* IDENTIFIER Is the Type*/
       for (std::vector<AST::StringLiteral *>::iterator sit = a->begin(); sit != a->end() ; ++sit)
       {
         AST::StringLiteral *s = (*sit);
-        // LDS_LOG_INFO("variables_sort: got 1 variable  %s type:%s",s->getString().c_str(),sort->getString().c_str());
+        //LDS_LOG_ERROR("variables_sort: got 1 variable  %s type:%s",s->getString().c_str(),sort->getTypeClassName());
         AST::VarDecl *v =ldsp->create_variable(m_CurrentDC,m_RootTranslationUnit,(*sit),sort);
         v->setInit($4);
         m_CurrentDC->addDecl(v);
   | T_DEFAULT  T_CHARSTRING {
     LDS_LOG_INFO("default_initialization: string ");
     AST::Type &Char = m_RootTranslationUnit->getASTContext().CharTy;
-    AST::Type &CharArray = m_RootTranslationUnit->getASTContext().getConstantArrayType(&Char,strlen($<string>1)+1 );
-    $$ = new AST::StringLiteral($<string>1,&CharArray);
+    AST::Type &CharArray = m_RootTranslationUnit->getASTContext().getConstantArrayType(&Char
+                             ,strlen($<str_expr>2->getString().c_str())+1 );
+    $<str_expr>2->setType(&CharArray);
+    $$ = $<str_expr>2;
   } 
 ;
 
 
 operation_signatures: /* Empty*/
   | T_OPERATORS operation_list {
+    LDS_LOG_ERROR("operation_signatures: operator lists TODO");
   }
 ;
 
 
 op_arguments: T_LPARENTHESES arguments T_RPARENTHESES {
     /* see 101 Pg 42 this is a <sort list>*/
+    $$ = $2;
   }
   | T_LPARENTHESES T_RPARENTHESES {
     $$ = NULL;
     LDS_LOG_INFO("op_result: sort %s ",$2->getTypeClassName() );
  }
 ;
-opt_task_definition: /**/
-  | task_definitions {
-  }
-;
 
 task_definitions: task {
         LDS_LOG_DEBUG("task_definitions: begin Stack size: " F_SIZE,m_StackDC.size());
     }
     | T_CHARSTRING {
         LDS_LOG_DEBUG("primary: Constant string %s",$<str_expr>1->getString().c_str());
-        AST::Type &Char = m_RootTranslationUnit->getASTContext().CharTy;
-        AST::Type &CharArray = m_RootTranslationUnit->getASTContext().getConstantArrayType(&Char,strlen($<string>1)+1 );
+        AST::Type &Char      = m_RootTranslationUnit->getASTContext().StringTy;
+        AST::Type &CharArray = m_RootTranslationUnit->getASTContext().getConstantArrayType(&Char,strlen($<str_expr>1->getString().c_str())+1 );
+        $<str_expr>1->setType(&CharArray);
         $<expr>$ = $<str_expr>1;
     }
     | imperative_expression {
         //$<stmt>$ = act;
 
         //m_StackDC.pop();
-        //* NEW */
+        /* NEW */
         
         if (fct->isNew() && args)
         {
 ;
 
 primary_list: primary {
-      LDS_LOG_INFO("primary_list : TODO");
+      LDS_LOG_INFO("primary_list : Create ExprArray");
       $$ = new ExprArray();
       $$->push_back($1);
     }
     | primary_list T_COMMA primary {
-      LDS_LOG_INFO("primary_list : TODO");
+      LDS_LOG_INFO("primary_list : Add primary To Primary Array");
       $$->push_back($3);
     }
 ;