• Domingo 22 de Diciembre de 2024, 07:49

Autor Tema:  Compilador De Expresion Postfija  (Leído 1519 veces)

george-cr8

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Compilador De Expresion Postfija
« en: Martes 13 de Junio de 2006, 22:27 »
0
:scream:
Espero su ayuda con este codigo, es mi proyecto final y es para mañana, lo necesito pasar a pascal, pero no tengo ni idea, espero su ayuda pronto gracias:

'Variables globales
Dim cad As String
Dim ensamblador As String
Dim op1 As String
Dim op2 As String
Dim cod_in As String
Dim salto As String
Dim pila(0 To 12) As String
Dim pila_aux(0 To 12) As String
Dim num_op As Integer
Dim tope As Integer
Dim dato As String
Dim hab As Byte

'Entrada de la expresión posfija
Private Sub Command1_Click()
cad = InputBox("expresion posfija")
ex_pos.Text = cad
End Sub

Private Sub Command2_Click()
Dim auxilia As String
Dim operando As String
Dim apuntador As Integer
salto = Chr(13) & Chr(10)
tope = 0
op1 = 0
op2 = 0
num_op = 1
dato = 0
apuntador = 1

While apuntador < Len(cad)

  For apuntador = 1 To Len(cad) + 1

  cod_int.Text = op1 & salto & op2 & salto & cod_in & salto

   auxilia = Mid(cad, apuntador, 1) 'obtiene el contenido dentro de la
cadena

   If auxilia <> "+" And auxilia <> "-" And auxilia <> "*" And auxilia <>
"/" Then
    dato = auxilia
    meter (dato)

   Else
    operando = auxilia
    op2 = sacar()
    op1 = sacar()

    If num_op = 1 Or num_op = 2 Then
     cod_in = "t" & num_op & "=" & op1 & operando & op2
     meter (cod_in)
     hab = 1
    Else

     If Len(op2) < 3 Then
      cod_in = "t" & num_op & "=" & "t" & num_op - 1 & operando & " " & op2
      meter (cod_in)

     Else
      cod_in = "t" & num_op & "=" & "t" & num_op - 2 & operando & " " & "t"
& num_op - 1 & salto
      meter (cod_in)

     End If
    hab = 2

    End If
   num_op = num_op + 1
    Print salto & salto & cod_in
    Print salto & ensamblador
   End If

  Next apuntador
Wend
End Sub

'Sacar los elementos contenidos en la pila
Public Function sacar() As String
If tope >= 1 Then
  tope = tope - 1
  sacar = pila(tope)
End If
End Function

Public Function meter(dato) As Integer
pila(tope) = dato
tope = tope + 1
End Function

Private Sub Command4_Click()
End
End Sub

Private Sub Command3_Click As String
Dim apunta As Integer
Dim caracter As String
Dim operacion As String
Dim signo As String
Dim cuenta As String
Dim apunta_aux As Integer
apunta_aux = 0
cuenta = 0
apunta = 1
For apunta = 1 To Len(cod_in)
  caracter = Mid(cod_in, apunta, 1)
  If caracter = "=" Then
   If hab = 1 Then
    cuenta = Mid(cod_in, apunta + 1, 1)
   Else
    cuenta = Mid(cod_in, apunta + 1, 2)
   End If
   For apunta_aux = apuntador To Len(cod_in)
    operacion = Mid(cod_in, apunta_aux + 1, 1)
    If operacion = "+" Then
     signo = "ADD"
    ElseIf operacion = "-" Then
     signo = "SUB"
    ElseIf operacion = "*" Then
     signo = "MUL"
    ElseIf operacion = "/" Then
     signo = "DIV"
    End If
   Next apunta_aux
   If hab = 1 Then
    ensamblador = "LDA" & " " & op1 & salto & signo & " " & op2 & salto &
"STA" & " " & "t" & num_op - 1 & salto
   Else
    ensamblador = "LDA" & " " & op1 & signo & " " & op2 & salto & "STA" & "
" & "t" & num_op - 1 & salto
   End If
   ensam.Text = ensamblador
  End If
End Sub

ESPERO SU AYUDA GRACIAS
Este es mi correo:
george_rf8@hotmail.com
 B)  :rolleyes:  :alien:

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Compilador De Expresion Postfija
« Respuesta #1 en: Miércoles 14 de Junio de 2006, 21:09 »
0
En este foro no se hacen tareas.
Si tienes alguna duda puntual sobre como hacer algo no dudes en preguntas (al menos que la duda sea ¿como hago para pasarlo?)