Professional Documents
Culture Documents
Module Module1
Structure token
Dim expr As String
Dim op As String
Dim num As String
Dim par As String
End Structure
Sub Main()
Console.WriteLine("UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN")
Console.WriteLine("Analizador L�xico y Sint�ctico")
Dim k As Integer
Dim h As Integer
Dim myString As String = Console.ReadLine
Dim myChar As String
Dim TestLen As Integer = Len(myString)
Dim exp(TestLen) As token
Dim i As Integer
For i = 0 To (TestLen - 1)
myChar = myString.Chars(i)
exp(i).op = "op"
Console.WriteLine("<" & exp(i).op & "," & myChar & ">")
ElseIf myChar = "a" Or myChar = "b" Or myChar = "c" Or myChar = "d" Or
myChar = "e" Or myChar = "f" Or myChar = "g" Or myChar = "h" Or myChar = "i" Or
myChar = "j" Or myChar = "k" Or myChar = "l" Or myChar = "m" Or myChar = "n" Or
myChar = "o" Or myChar = "p" Or myChar = "q" Or myChar = "r" Or myChar = "s" Or
myChar = "t" Or myChar = "v" Or myChar = "w" Or myChar = "x" Or myChar = "y" Or
myChar = "z" Then
exp(i).expr = "expr"
Console.WriteLine("<" & exp(i).expr & "," & myChar & ">")
ElseIf myChar = "1" Or myChar = "2" Or myChar = "3" Or myChar = "4" Or
myChar = "5" Or myChar = "6" Or myChar = "7" Or myChar = "8" Or myChar = "9" Then
exp(i).num = "num"
Console.WriteLine("<" & exp(i).num & "," & myChar & ">")
'sintactico
k = 0
h = TestLen + 1000
While k <= TestLen - 1
If exp(k).par = "pari" Then
While exp(k).par <> "parf"
k = k + 1
If exp(k).expr = "expr" Then
k = k + 1
If exp(k).par = "parf" Then
Else
If exp(k).op = "op" Then
Else
Console.WriteLine(" Error en la expresi�n, se
esperaba un <op>, no cumple con la regla 1 o 4")
k = h
End If
End If
Else
Console.WriteLine(" Error en la expresi�n, se esperaba una
<expr>, no cumple con al regla 1")
k = h
End If
End While
k = k + 1
Else
If exp(k).op = "op" Then
k = k + 1
If exp(k).par = "pari" Then
While exp(k).par <> "parf"
k = k + 1
If exp(k).expr = "expr" Then
k = k + 1
If exp(k).par = "parf" Then
Else
If exp(k).op = "op" Then
Else
Console.WriteLine(" Error en la expresi�n,
se esperaba un <op>, no cumple con la regla 1 o 4 ")
k = h
End If
End If
Else
Console.WriteLine(" Error en la expresi�n, se
esperaba una <expr>, no cumple con al regla 1")
k = h
End If
End While
k = k + 1
Else
If exp(k).expr = "expr" Then
k = k + 1
Else
Console.WriteLine(" Error en la expresi�n, se esperaba
una <expr>, no cumple con al regla 1 o 4 ")
k = h
End If
End If
Else
If exp(k).expr = "expr" Then
k = k + 1
Else
Console.WriteLine(" Error en la expresi�n, se esperaba una
<expr>, no cumple con al regla 1 o 4 ")
k = h
End If
End If
End If
End While
If k > TestLen - 1 And k <> h Then
Console.WriteLine(" Expresi�n ingresada correctamente ")
End If
End Sub
End Module