Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-04-2014
Mantixd Mantixd is offline
Miembro
NULL
 
Registrado: dic 2013
Posts: 17
Poder: 0
Mantixd Va por buen camino
Post Detectar errores lexicos en un memo

Buenas tardes, hace tiempo me ayudaron mucho en un problema que tuve al comparar arreglos con un memo, lo que pasa es que estoy haciendo un analizador lexico y pues estoy poniendo los identificadores las palabras reservadas etc. en arreglos y los estoy comparando con lo que esta escrito en el memo y pues si encuentra alguna palabra pues la pone en un listbox. pero en fin mi duda ahora es que si por ejemplo ( estoy haciendo el analizador para ensamblador ) si tengo "XA" en vez de "AX" me pinte esa palabra de rojo o me diga error pero aca va lo que se me complica.

En ensamblador estan las MACRO y pues a esas macro le tienes que poner un nombre el que tu quieras y pues por ejemplo si quiero poner una macro para crearla seria asi

Ejemplo MACRO

Donde "Ejemplo" es el nombre que le puse al macro, y pues mi idea para detectar errores seria comparar mis arreglos con el memo y si alguna palabra del memo no esta en alguno de los arreglos me la marque como error.
pero con este ejemplo que puse la palabra "Ejemplo" me la marcaria como error.

Supongo que lo que tengo que hacer es comparar renglon por renglon cada letra de cada palabra para ver donde esta el error o que si encuentra la palabra macro despues de una palabra desconocida que la tome como correcta, no se si me este dando a entender y pues espero y me puedan ayudar y pues si no me di a entender u ocupan que les muestre mi codigo para darse una idea mejor pues lo hago con mucho gusto de ante mano gracias
Responder Con Cita
  #2  
Antiguo 30-04-2014
Mantixd Mantixd is offline
Miembro
NULL
 
Registrado: dic 2013
Posts: 17
Poder: 0
Mantixd Va por buen camino
Red face Me explicare mejor

Código Delphi [-]
 const
  RegAsm : Array[1..30] of string = ('AX','BX','CX','DX','AH','AL',
                                     'BH','BL','BP','CH','CL','CS',
                                     'DH','DL','DI','DS', 'GS', 'IP',
                                     'SI','SP','SS', 'ES',
                                     'EAX','EBP','EBX','ECX',
                                     'EDI','EDX','EIP','ESIFE');


begin

   SL := TStringList.Create;

   ListBox1.Clear;

   for i := 0 to Memo1.Lines.Count - 1 do
   begin

      AuxStr := Memo1.Lines[i];

      for j := 1 to Length(AuxStr) do
      begin
         if (AuxStr[j] <> ' ') and (AuxStr[j] <> ',') then
            Token := Token + AuxStr[j]
         else
         begin
            SL.Add(Token);
            Token := EmptyStr;
         end
      end;

      SL.Add(Token);
      Token := EmptyStr;

      for j := 0 to SL.Count - 1 do
         for k := Low(RegAsm) to High(RegAsm) do

            if UpperCase(SL[j]) = UpperCase(RegAsm[k]) then

               ListBox1.Items.Add(UpperCase(RegAsm[k]));
              

      SL.Clear;

   end;

   SL.Free;

En este codigo se muestra el arreglo que les mencione y el memo y el listbox, sencillamente lo que hace este programa es que si yo pongo los registros de ensamblador como se muestra en la imagen y le doy al boton analizar comparara el memo con el arreglo y lo mostrara en el listbox llamado registros

imageshack.com/a/img845/5014/l2r0.png

A lo que me referia es cuando escribo mal algun registro o algo me me lo mande a otro listbox que se llame errores o algo asi pero... ¿Como saber cual es error y cual no?, mi idea es por ejemplo.

Código Delphi [-]
if UpperCase(SL[j]) <> UpperCase(SimAsm[k]) then

algo asi que si son diferentes los datos del memo que los del arreglo los marque como error pero no todos los datos diferentes al arreglo son errores por ejemplo si yo quiero hacer una variable me la detectaria como error, y pues esa es mi duda en si como validar ese tipo de errores, me he quebrado la cabeza pensando la vdd aun soy algo nuevo en esto, espero y me puedan ayudar y perdon por el spam.

Última edición por Casimiro Notevi fecha: 30-04-2014 a las 09:45:16.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
detectar errores en hosting lucasarts_18 PHP 16 14-10-2011 02:12:00
Ayuda para detectar errores en consultas DamianG Varios 4 13-06-2011 14:59:20
Problemas Sumando Memo1.Memo + Memo2.Memo JuanErasmo Impresión 10 05-02-2008 14:40:13
Campo memo tabla escribirlo en componente Memo Sayuri Conexión con bases de datos 2 18-08-2005 13:58:01
memo a campos memo soloriv Varios 5 26-05-2005 20:25:31


La franja horaria es GMT +2. Ahora son las 13:25:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi