Analizador lexico c++ lee codigo

Bueno como siempre en la mayoria de veces nesesitamos conocer como realizar el analizardor de firerentes maneras, esta vez les mostrare uno con c++ con clases, resulta que asi es mucho mas facil su entendimiento al final agregare el grafo de como se resuelve.

Que hace el programa solo voy a explicar lo esencial:

leer una porcion de codigo escrito en c++, y indica cuantas palabras reservadas, delimitaroes, identificadores tiene.

archivo c++:

/*
podemos ver tokes sin errores de sintaxi:
void main(){int i;char c=’d’;for(i=0,i<2;i++)} podemos ver que es sencible a mayuscula con este ejemplo: VOID MAIN(){INT i;CHAR c='d';FOR(i=0,i<2;i++)} esto tiene errores de sixtaxis: int main(){int i; int x;x +=i;cout << x;if(x>=0);else cout << " "; return 0;} */ #include
#include
#include

using namespace std;

class LChocCac
{
public :
int i,j,k,ti,oprfl,delfl,keyfl,Litfl,cLitfl,ptfl,tfl,mxIdeni,Liti,mxIdenj,mxOpri,mxOprj,mxDeli,Erri;
int uqIdi,uqOpi,uqDei,defOpi,TamReser,cLiti;
char VerifiCador[50],mxIden[20][20],mxOpr[20][20],mxDel[20],tmpStr[50];
char MatDeliAsig[20][20],defOpr[15],defDel[15],TokenReser[20][20];
char uqOpr[20][20],uqIden[20][20],uqIdfl[20],uqOpfl[20],uqDefl[20],uqDel[20];
char Opr[20][20],invalTok[20][20],Con[20][20],Iden[20][20],
Key[20][20],inTok[20],Lit[20][20],Err[20][20],cLit[20][20];
int Opri,invToki,Coni,Ideni,Keyi,Deli,inToki;

LChocCac(char *str)
{
strcpy(VerifiCador,str);
TamReser=14;
strcpy(TokenReser[0],»int»);
strcpy(TokenReser[1],»float»);
strcpy(TokenReser[2],»double»);
strcpy(TokenReser[3],»for»);
strcpy(TokenReser[4],»if»);
strcpy(TokenReser[5],»else»);
strcpy(TokenReser[6],»while»);
strcpy(TokenReser[7],»do»);
strcpy(TokenReser[8],»return»);
strcpy(TokenReser[9],»char»);
strcpy(TokenReser[10],»break»);
strcpy(TokenReser[11],»goto»);
strcpy(TokenReser[12],»void»);
strcpy(TokenReser[13],»main»);

defOpi=18;
strcpy(MatDeliAsig[0],»+»);
strcpy(MatDeliAsig[1],»-«);
strcpy(MatDeliAsig[2],»*»);
strcpy(MatDeliAsig[3],»/»);
strcpy(MatDeliAsig[4],»%»);
strcpy(MatDeliAsig[5],»=»);
strcpy(MatDeliAsig[6],»<"); strcpy(MatDeliAsig[7],">«);
strcpy(MatDeliAsig[8],»<="); strcpy(MatDeliAsig[9],">=»);
strcpy(MatDeliAsig[10],»==»);
strcpy(MatDeliAsig[11],»=+»);
strcpy(MatDeliAsig[12],»=-«);
strcpy(MatDeliAsig[13],»=*»);
strcpy(MatDeliAsig[14],»=/»);
strcpy(MatDeliAsig[15],»=%»);
strcpy(MatDeliAsig[16],»++»);
strcpy(MatDeliAsig[17],»–«);
strcpy(defOpr,»+-/*%=<>«);
strcpy(defDel,»;,:{}[]()»);
}

int IsMxIden(char ch)
{
return((IsIden(ch)||IsFloat(ch))?1:0);
}

int IsIden(char ch)
{
return((isalpha(ch)||ch==’_’)?1:0);
}

int IsFloat(char ch)
{
return((isdigit(ch)||ch==’.’)?1:0);
}

int IsOpr(char ch)
{
oprfl=0;
for(ti=0;ti

Esta entrada fue publicada en Sin categoría. Guarda el enlace permanente.

6 respuestas a Analizador lexico c++ lee codigo

  1. Josi Josi Malave dijo:

    hola, como te va?? Excelente el código. Me lo podrías enviar a mi correo?

  2. melvin figueroa dijo:

    que tal se ve bueno el codigo pero deberias de compartirlo al final los que investigan les va bien y me serviria tu codigo para fines academicos!

  3. kEvin Ardani Schaart dijo:

    por favor enviarme el codigo completo del analizador lexico

  4. Manorar dijo:

    Hola en algunas lineas al parecer esta incompletas algunas expresiones como por ejemplo estas:
    while(VerifiCador[i]!=”)
    {
    o esta :
    mxIden[mxIdeni++][mxIdenj]=”;
    podrias facilitarme tu cod por correo pues no lo puedo hacer funcionar
    Gracias

  5. choccac dijo:

    no es fumada, es solo un pequeño analizador, espero pronto terminar uno sobre Analizador en Bibliotecas Qt y lo pondré en blog para compartirlo.

  6. Luis Chiquin dijo:

    wau…q fumada d codigo…mga interesant!!!

Los comentarios están cerrados.