Professional Documents
Culture Documents
Codigo
Codigo
Sub Main()
myChar = myString.Chars(i)
Else
Console.WriteLine(myChar & " TOKEN NO RECONOCIDO ")
End If
Next
Console.WriteLine(" ")
Dim z As Integer
J = 0
z = 1
Console.WriteLine(" ")
Console.WriteLine(" TABLA DE SIMBOLOS :")
For J = 0 To (TestLen - 1)
myChar = myString.Chars(J)
If myChar = "+" Or myChar = "-" Or myChar = "/" Or myChar = "*" Or
myChar = "=" Or myChar = "^" Then
' Console.Write("<" & myChar & ">")
Else
Console.WriteLine(myChar & " ")
Console.WriteLine(myChar & " TOKEN NO RECONOCIDO")
End If
Next
J = 0
z = 1
Console.WriteLine(" ")
Console.WriteLine(" EXPRESION ANALIZADA LEXCAMENTE :")
Console.Write(" ")
For J = 0 To (TestLen - 1)
myChar = myString.Chars(J)
Else
Console.WriteLine(myChar & " TOKEN NO RECONOCIDO")
End If
Next
Console.WriteLine(" ")
Dim g As Integer
Dim h As Integer
Dim e As Integer
i = 0
h = 1
e = 0
g = 0
Console.WriteLine(" ")
Console.WriteLine("ANALIZADOR SINTACTICO: ")
'Console.WriteLine(":::::TOKENS:::::")
For i = 0 To TestLen - 1
If i = 0 Then
If myString.Chars(i) = "(" Then
g = g + 1
Else
If exp(i) = "exp" Or exp(i) = "num" Then
Else
If myString.Chars(i) = "-" Then
Else
If myString.Chars(i) = "+" Or myString.Chars(i) = "*"
Or myString.Chars(i) = "/" Or myString.Chars(i) = "^" Or myString.Chars(i) = "="
Then
Console.WriteLine(" ERROR EN EL CARACTER " & i
& " :")
Console.WriteLine(" no se puede escribir un
operador " & myString.Chars(i) & " al comienzo de una expresion")
h = 0
End If
End If
End If
End If
Else
Select Case exp(i)
Case "exp"
Else
If exp(i - 1) = "op" Then
Else
Console.WriteLine(" ERROR EN EL CARACTER " & i
& " :")
Console.WriteLine(" no se puede poner una
expresion despues de una expresion")
h = 0
End If
End If
Case "num"
If myString.Chars(i - 1) = "(" Then
Else
If exp(i - 1) = "op" Then
Else
Console.WriteLine(" ERROR EN EL CARACTER " & i
& " :")
Console.WriteLine(" no se puede poner una
expresion despues de una expresion")
h = 0
End If
End If
Case "op"
Else
Console.WriteLine(" ERROR EN EL CARACTER " & i
& " :")
Console.WriteLine(" no se puede escribir el
operador " & myString.Chars(i) & " despues de un " & myString.Chars(i - 1))
h = 0
End If
Else
If exp(i - 1) = "exp" Or exp(i - 1) = "num" Then
Else
If myString.Chars(i - 1) = ")" Then
Else
Console.WriteLine(" ERROR EN EL CARACTER "
& i & " :")
Console.WriteLine(" no se puede poner un
operador depues de un operador")
h = 0
End If
End If
End If
Case "par_d"
g = g + 1
Else
If exp(i - 1) = "op" Then
Else
Console.WriteLine(" ERROR EN EL CARACTER " & i
& " :")
Console.WriteLine(" no se puede poner una
parentesis cerrado despues de una parentesis abierto")
h = 0
End If
End If
Case "par_iz"
e = e + 1
If exp(i - 1) = "exp" Or exp(i - 1) = "num" Then
Else
If exp(i - 1) = "par_iz" Then
Else
If exp(i - 1) = "op" Then
Console.WriteLine(" ERROR EN EL CARACTER "
& i & " :")
Console.WriteLine(" no se puede poner un
parentesis abierto luego de un operador")
Else
Console.WriteLine(" ERROR EN EL CARACTER "
& i & " :")
Console.WriteLine(" no se puede poner dos
parentesis juntos sin ninguna expresion")
End If
h = 0
End If
End If
End Select
End If
Next
If h = 1 Then
Console.WriteLine(" NO MUESTRA ERRORES")
End If
Console.WriteLine(" ")
Console.WriteLine(" RESULTADO DEL ANALIZADOR SINTACTICO:")
If h = 1 Then
If e = g Then
Console.WriteLine(" ::LA EXPRESION ESTA BIEN ESCRITA")
Else
Console.WriteLine(" ::LE FALTA UNA PARENTESIS")
End If
Else
Console.WriteLine(" ::ERROR EN LA EXPRESION")
End If
End Sub
End Module