Hola, estaba aburrido y programe esto:
import os
filepath = input("Ruta del archivo: ")
archivo = open(filepath, "r", encoding = 'utf-8') # Abre el archivo con codificado UTF-8
for linea in archivo.readlines():
if "$$" in linea: # $$ Indica que hay un comentario
pass
elif "add" in linea: # "add" Indica que los proximos numeros que esten entre comillas simples seran sumados
arreglo = linea.split('"')
arreglo2 = linea.split('"')
# print(arreglo[1])
# print(arreglo2[1])
num1 = arreglo[1]
num2 = arreglo2[1]
int(num1)
int(num2)
total = float(num1) + float(num2)
print(total)
elif "clrscr()" in linea:
os.system('cls')
elif "int" in linea: # "int" Indica que es una variable de tipo entero
varName = linea.split('"') # Nombre de la variable
varValue = linea.split('|') # Valor de la variable
print(varName[1])
print(varValue[1])
elif "putsln" in linea: # putsln Indica que se imprimira un texto
putslnFunction = linea.split('"')
printedText = putslnFunction[1]
if printedText == varName[1]: # <== NO FUNCIONA
print(varValue[1])
elif printedText == '':
print("is null!")
else:
print(printedText)
archivo.close()
print("Code execution finished.")
os.system('pause')
Bueno, practicamente seria un """""lenguaje de programación""""" (notese la cantidad de comillas) que cree, para escribir código en este """""lenguaje de programación""""" , se hace en un fichero
con extensión .ocl, aunque le puedes poner cualquier extension...
Ejemplo:
$$Este es un comentario
putsln "áéíóú ÁÉÍÓÚ äëïöü àèìòù"
putsln "Ñandú!"
add "5" "5"
int "variable" |8|
putsln "variable"
Si, una de las sintaxis mas raras. Parece una amalgama de lenguajes
La funcion "add" suma numeros
La función "putsln" imprime texto en pantalla
La función int, es para variables, funciono, hasta que intente que se pueda imprimir variables con la función "putsln"
Como dije anteriormente, ahi empeze a tener problemas, ya que me aparecia que la variable varName (que es el nombre a la variable) y varValue (que es el valor de la variable) no estaban definidas, pero si lo están.
PD: en sí, las partes donde se usa split, lo saque de un código donde me ayudo engel lex, en un tema que cree [Python 3.6] Como hacer que python lea una cadena especifica de un fichero? (https://foro.elhacker.net/scripting/python_36_como_hacer_que_python_lea_una_cadena_especifica_de_un_fichero-t474906.0.html)
Este incomodo momento donde nadie comenta nada y pasa como otra post mas desapercibido...
(Por ahora :))
Lo de arriba lo puse a las 9:54PM, hora chilena
tu mismo te criticas? :huh:
abres el tema y luego te troleas...... :laugh: :laugh: :laugh: :D :D :D XD
(http://oi41.tinypic.com/2zylmdx.jpg)
(http://s6.tinypic.com/33dhvea_th.jpg)
Al parecer sí :P
De paso borro el anterior comentario antes de que llegue otro :silbar:
realmente me causa gracia este código, pero en fin:
elif "putsln" in linea: # putsln Indica que se imprimira un texto
putslnFunction = linea.split('"')
varName = linea.split('"') # Nombre de la variable
printedText = putslnFunction[1]
varValue = linea.split('|') # Valor de la variable
if printedText == varName[1]: # <== NO FUNCIONA
print(varValue[0])
para que funcione sin cambiar la estrucutra general del código, pero con esta forma de escribir lo estaras complicando y alargando de más.
Edito:
como tuve ganas hice otro código para que veas otra forma simple de hacerlo:
import re
class Leer:
def __init__(self,archivo):
self.lectura = open(archivo,'r')
self.sentencias={"add":self.sumar,"putsln":self.salida}
def sumar(self):
text = linea
str_pat = re.compile(r'\"(.*?)\"')
cadena=str_pat.findall(text)
enteros = list(map(int, cadena))
print(sum(enteros))
def salida(self):
text = linea
str_pat = re.compile(r'\"(.*?)\"')
cadena=str_pat.findall(text)
print("".join(cadena))
def mostrar(self):
global linea
lista_sentencias=sorted(self.sentencias.keys())
for linea in self.lectura.readlines():
for cadena in lista_sentencias:
orden= re.compile(cadena)
if orden.match(linea):
accion = self.sentencias.get(cadena)
accion()
self.lectura.close()
archivo1=Leer('prueba.txt')
archivo1.mostrar()
Muchas gracias :)
import os
filepath = input("Ruta del archivo: ")
archivo = open(filepath, "r", encoding = 'utf-8') # Abre el archivo con codificado UTF-8
for linea in archivo.readlines():
if "add" in linea: # "add" Indica que los proximos numeros que esten entre comillas simples seran sumados
arreglo = linea.split('"')
arreglo2 = linea.split('"')
# print(arreglo[1])
# print(arreglo2[1])
num1 = arreglo[1]
num2 = arreglo2[1]
int(num1)
int(num2)
total = float(num1) + float(num2)
print(total)
elif "$$" in linea: # $$ Indica que hay un comentario
pass
elif "clrscr()" in linea:
os.system('cls')
elif "int" in linea: # "int" Indica que es una variable de tipo entero
varName = linea.split('"') # Nombre de la variable
varValue = linea.split('|') # Valor de la variable
if "putslnvar" in linea:
putslnvarFunction = linea.split('"')
if putslnvarFunction[1] == varValue[1] :
print(varValue[1]) # envez de imprimirme el valor de la variable, que en este caso es 8, me imprime el nombre de la variable!!!!!!!!!!!!!!!!!!
elif putslnvarFunction[1] == '':
print("is null!")
# print(varName[1])
# print(varValue[1])
elif "putsln" in linea:
putslnFunction = linea.split('"') # putsln Indica que se imprimira un texto
printedText = putslnFunction[1]
'''
if printedText == '':
print(printedtext)
else:
print(printedText) # Imprime el texto que se ha introducido en la función putsln. Ejemplo: putsln "Hola!"
'''
print(printedText) # Imprime el texto que se ha introducido en la función putsln. Ejemplo: putsln "Hola!"
archivo.close()
print("Code execution finished.")
os.system('pause')
Ya me aburrí, no lo logro hacer funcionar. :-(
Si alguien sabe, puede tomar el código y arreglarlo, si quieren.