{
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);
}
;