%{
#include <stdio.h>
#include <string.h>
int red = 0;
%}

PROMENLJIVA (_|[a-zA-Z])[A-Za-z0-9]*
OSNOVA [0-9A-F]+_(2|8|10|16)

%%

{OSNOVA} {
    red = 0;
    char broj[20];
    int i=0, ind, osnova, noviBroj=0;
    while(yytext[i]!='_')
    {
        broj[i]=yytext[i];
        i++;
    }
    broj[i] = '\0';
    ind = i+1;
    if(yytext[ind]=='2')
        osnova=2;
    else if(yytext[ind]=='8')
        osnova=8;
    else if(yytext[ind]=='1' && yytext[ind+1]=='0')
        osnova=10;
    else
        osnova=16;
    int tempOsnova = 1;
    for(i=strlen(broj)-1; i>=0; i--)
    {
        if(broj[i]>='0' && broj[i]<='9')
            noviBroj = noviBroj + (broj[i]-'0')*tempOsnova;
        else
            noviBroj = noviBroj + (broj[i]-'A'+10)*tempOsnova;
        tempOsnova*=osnova;
    }
    printf("%d ",noviBroj);
};

{PROMENLJIVA}((--)|("+""+")) {
    red = 0;
    char promenljiva[20];
    int i=0;
    while(yytext[i]!='-' && yytext[i]!='+')
    {
        promenljiva[i]=yytext[i];
        i++;
    }
    promenljiva[i]='\0';
    printf("%s = %s %c 1",promenljiva, promenljiva,  yytext[i]);
};

{PROMENLJIVA} {
    printf("%s ",yytext);
    red = 0;
};

[="/""*""+"-] {
    printf("%s ",yytext);
    red = 0;
};

\n {
    if(red<=1)
    {
        printf("\n");
        red++;
    }
};

. ;

%%

int main()
{
    extern FILE *yyin;
    yylex();
    return 0;
}