Programación General > Pascal
Compilador De Expresion Postfija
(1/1)
george-cr8:
: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:
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?)
Navegación
Ir a la versión completa