正则表达式在另一个之前执行

时间:2017-12-30 18:00:39

标签: compilation flex-lexer lex compiler-construction

我的代码存在问题

alphabet [a-zA-Z] 
var  {alphabet}+[{chiffre}{alphabet}_]*
{varIntDecl} {
        for(int i=5 ;i<yyleng;i++)tab[cmp].token[i-5]=yytext[i]; strcpy(tab[cmp].value,"0");strcpy(tab[cmp].type,"Var"); 

            tab[cmp].indiceTS= cmp;

                strcpy(tab[cmp++].typeValeur,"int");

                    yylval.indiceTS=cmp;

                        return (INTVARIABLEDECL);

        }

{var} {

        for(int i=0;i<cmp;i++){

                    if(!strcmp(tab[i].token,yytext)) {

                            return (VARINT);

                            }
        }
            printf("Error Variable non trouvé Please Declare First ");
    }



varIntDecl {int}{blancs}{var};

当我执行此操作时 我有一个yacc部分,但它与此无关

我每次都会执行var的冲突,即使这不是我想做的事情

这是执行的结果:

  • int abc
  

错误变量非麻烦请声明第一个

  • int adc
  

错误变量非麻烦请声明第一个

0 个答案:

没有答案