Untitled
unknown
plain_text
2 years ago
1.9 kB
16
Indexable
import pandas as pd
class node_stack:
def __init__(self, symbol, lexeme):
global count
self.symbol = symbol
self.lexeme = lexeme
self.id = count + 1
count += 1
class node_tree:
def __init__(self, id, symbol, lexeme):
self.id = id
self.symbol = symbol
self.lexeme = lexeme
self.children = []
self.father = None
tabla = pd.read_csv("tabla.csv", index_col = 0)
count = 0
stack = []
# init stack
symbol_E = node_stack('E', None)
symbol_dollar = node_stack('$', None)
stack.append(symbol_dollar)
stack.append(symbol_E)
# init tree
root = node_tree(symbol_E.id, symbol_E.symbol, symbol_E.lexeme)
input = [
{"symbol":"int", "lexeme":"4", "nroline":2, "col":2},
{"symbol":"+", "lexeme":"+", "nroline":2, "col":4},
{"symbol":"int", "lexeme":"5", "nroline":2, "col":6},
{"symbol":"$", "lexeme":"$", "nroline":0, "col":0},
]
index_input = 0
while len(stack) > 0:
if input[index_input]["symbol"] not in tabla.columns:
print("Error de sintaxis")
break
if stack[-1].symbol == input[index_input]["symbol"]:
stack.pop()
index_input += 1
else:
production = tabla.loc[stack[-1].symbol, input[index_input]["symbol"]]
print(production)
if production != ('e'):
stack.pop()
for symbol in reversed(production.split()):
node = node_stack(symbol, None)
print ('produccion:', node.symbol)
print ('input actual', input[index_input]["symbol"])
stack.append(node)
#child = node_tree(node.id, node.symbol, node.lexeme)
#child.father = root
#root.children.append(child)
#root = child
else:
stack.pop()
#print ('stack actual', stack[-1].symbol)
if len(stack) == 0:
print("Parser exitoso")
# llamar a la función "imprimir_arbol" para imprimir el árbol sintáctico resultante
else:
print("Error de sintaxis")Editor is loading...