本文整理汇总了Python中aula5.fila.Fila类的典型用法代码示例。如果您正苦于以下问题:Python Fila类的具体用法?Python Fila怎么用?Python Fila使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Fila类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: analise_sintatica
def analise_sintatica(expressao):
"""
Função que realiza analise sintática de tokens produzidos por analise léxica.
Executa validações sintáticas e se não houver erro retorn fila_sintatica para avaliacao
:param fila: fila proveniente de análise lexica
:return: fila_sintatica com elementos tokens de numeros
"""
expressao=analise_lexica(expressao)
fila2=Fila()
if len(expressao)!=0:
for i in expressao:
if i in set("{}[]()/+-*") or i in set("0123456789") :
fila2.enfileirar(i)
#elif i not in set("."):
# fila2.enfileirar(float(i))
else:
fila2.enfileirar(i)
return fila2
else:
raise ErroSintatico()
示例2: test_float
def test_float(self):
fila = Fila()
fila.enfileirar('1234567890')
fila.enfileirar('.')
fila.enfileirar('4')
fila_sintatica = analise_sintatica(fila)
self.assertEqual(1234567890.4, fila_sintatica.desenfileirar())
self.assertTrue(fila_sintatica.vazia())
示例3: analise_sintatica
def analise_sintatica(fila):
"""
Função que realiza analise sintática de tokens produzidos por analise léxica.
Executa validações sintáticas e se não houver erro retorn fila_sintatica para avaliacao
:param fila: fila proveniente de análise lexica
:return: fila_sintatica com elementos tokens de numeros
"""
fil = Fila()
char = ""
if len(fila) == 0:
raise ErroSintatico("erro")
while (len(fila) != 0):
df = fila.desenfileirar()
if df in set("-+*/()[]{}"):
if len(char) > 0:
if "." in char:
fil.enfileirar(float(char))
char = ""
else:
fil.enfileirar(int(char))
char = ""
fil.enfileirar(df)
else:
char = char + df
if len(char) != 0:
if "." in char:
char = float(char)
else:
char = int(char)
fil.enfileirar(char)
return fil
pass
示例4: analise_sintatica
def analise_sintatica(fila):
"""
Função que realiza analise sintática de tokens produzidos por analise léxica.
Executa validações sintáticas e se não houver erro retorn fila_sintatica para avaliacao
:param fila: fila proveniente de análise lexica
:return: fila_sintatica com elementos tokens de numeros
"""
novafila = Fila()
if fila.vazia():
raise ErroSintatico;
save = ''
while not fila.vazia():
item = fila.desenfileirar()
if num(item):
save = int(item)
if fila.vazia():
novafila.enfileirar(save)
return novafila
if fila.primeiro() != '.':
novafila.enfileirar(save)
elif item == '.':
item = fila.desenfileirar()
save = float(save)
save += (float(item)) / (10 ** (len(item)))
novafila.enfileirar(save)
else:
novafila.enfileirar(item)
return novafila
示例5: analise_sintatica
def analise_sintatica(fila): #PRONTO PORÉM GRANDE
"""
Função que realiza analise sintática de tokens produzidos por analise léxica.
Executa validações sintáticas e se não houver erro retorn fila_sintatica para avaliacao
:param fila: fila proveniente de análise lexica
:return: fila_sintatica com elementos tokens de numeros
"""
fila2 = Fila()
car=''
if (len(fila) == 0):
raise ErroSintatico('erro')
while (len(fila)!=0):
c = fila.desenfileirar()
if c in ('+-*/(){}[]'):
if len(car)!=0:
if '.' in car:
fila2.enfileirar(float(car))
car = ''
else:
fila2.enfileirar(int(car))
car = ''
fila2.enfileirar(c)
else:
car = car + c
if len(car)>0:
if '.' in car:
car = float(car)
else:
car = int(car)
fila2.enfileirar(car)
return fila2
示例6: analise_lexica
def analise_lexica(expressao):
"""
A função analisa um expreção e diz se está conforme os parametros passados,logo a função verifica se contem um caracter que nao seja alguns desses "0123456789.-+*/{}[]()"
Tempo de execução O(n)
Espaço de memoria O(n)
:param expressao: recebe a expressao a ser analisada
:return: fila com os caracteres indesejados """
fila = Fila()
correto = R"0123456789.-+*/{}[]()"
if expressao:
valor = ''
for n in expressao:
if n in correto:
if n in '(){}[].*/-+':
if valor:
fila.enfileirar(valor)
valor = ''
fila.enfileirar(n)
else:
valor = valor + n
else:
raise ErroLexico()
if valor:
fila.enfileirar(valor)
return fila
示例7: analise_sintatica
def analise_sintatica(fila):
tokens = Fila ()
numValor = 0
point = False
if len(fila) > 0:
for elemento in fila:
if elemento in set('{[()]}+-*/'):
if not numValor == 0:
tokens.enfileirar(numValor)
numValor = 0
tokens.enfileirar(elemento)
point = False
else:
if elemento == '.':
point = True
else:
valor = float(elemento)
if point:
numValor += (valor / 10 ** len (elemento))
else:
numValor += valor
if not numValor == 0:
tokens.enfileirar(numValor)
return tokens
else:
raise ErroSintatico ('')
示例8: analise_lexica
def analise_lexica(expressao):
"""
Executa análise lexica transformando a expressao em fila de objetos:
Transforma inteiros em ints
Flutuantes em floats
e verificar se demais caracteres são validos: +-*/(){}[]
:param expressao: string com expressao a ser analisada
:return: fila com tokens
"""
fila = Fila()
# numeros e tokens
nt = r"0123456789.-+*/{}[]()"
if expressao:
valor = ""
for i in expressao:
if i in nt:
if i in ".-+*/{}[]()":
if valor:
fila.enfileirar(valor)
valor = ""
fila.enfileirar(i)
else:
valor = valor + i
else:
raise ErroLexico()
if valor:
fila.enfileirar(valor)
return fila
示例9: analise_lexica
def analise_lexica(expressao):
fila=Fila()
num=""
if len(expressao):
for t in expressao:
if t in set("0123456789"):
num=num+t
else:
if len(num)>0:
fila.enfileirar(num)
num=""
if t in set("{}[]()/+-*."):
fila.enfileirar(t)
else:
raise ErroLexico("Erro Léxico")
if not len(num)==0:
fila.enfileirar(num)
return fila
"""
Executa análise lexica transformando a expressao em fila de objetos:
Transforma inteiros em ints
Flutuantes em floats
e verificar se demais caracteres são validos: +-*/(){}[]
:param expressao: string com expressao a ser analisada
:return: fila com tokens
"""
pass
示例10: analise_lexica
def analise_lexica(expressao):
def caracteres(param1):
return param1 in "(){.}[]+-*/"
fila=Fila()
count=0
pilha=Pilha()
while count!=len(expressao):
if not(caracteres(expressao[count]) or num(expressao[count])):
raise ErroLexico
else:
if caracteres(expressao[count]):
if not pilha.vazia():
fila.enfileirar(pilha.desempilhar())
fila.enfileirar(expressao[count])
if num(expressao[count]):
if pilha.vazia():
pilha.empilhar(expressao[count])
else:
final=pilha.desempilhar()
pilha.empilhar(final+expressao[count])
count+=1
if not pilha.vazia():
fila.enfileirar(pilha.desempilhar())
return fila
示例11: analise_lexica
def analise_lexica(expressao): #PRONTO PORÉM FEIO
"""
Executa análise lexica transformando a expressao em fila de objetos:
Transforma inteiros em ints
Flutuantes em floats
e verificar se demais caracteres são validos: +-*/(){}[]
:param expressao: string com expressao a ser analisada
:return: fila com tokens
"""
car = ''
fila = Fila()
if len(expressao):
for c in expressao:
if c in ('1234567890'):
car = car+c
elif c in ("+-*/(){}[]."):
if len(car)!=0:
fila.enfileirar(car)
car = ''
fila.enfileirar(c)
else:
raise ErroLexico('erro')
if len(car)>0:
fila.enfileirar(car)
return fila
示例12: analise_lexica
def analise_lexica(expressao):
"""
Executa análise lexica transformando a expressao em fila de objetos:
Transforma inteiros em ints
Flutuantes em floats
e verificar se demais caracteres são validos: +-*/(){}[]
:param expressao: string com expressao a ser analisada
:return: fila com tokens
"""
def caracteres(param1):
return param1 in "(){.}[]+-*/"
fila = Fila()
count = 0
pilha = Pilha()
while count != len(expressao):
if not (caracteres(expressao[count]) or num(expressao[count])):
raise ErroLexico
else:
if caracteres(expressao[count]):
if not pilha.vazia():
fila.enfileirar(pilha.desempilhar())
fila.enfileirar(expressao[count])
if num(expressao[count]):
if pilha.vazia():
pilha.empilhar(expressao[count])
else:
final = pilha.desempilhar()
pilha.empilhar(final + expressao[count])
count += 1
if not pilha.vazia():
fila.enfileirar(pilha.desempilhar())
return fila
示例13: analise_lexica
def analise_lexica(expressao):
fila = Fila()
char = ""
if len(expressao):
for k in expressao:
if k in ("1234567890"):
char = char + k
elif k in ("()[]{}-+*/."):
if len(char) != 0:
fila.enfileirar(char)
char = ""
fila.enfileirar(k)
else:
raise ErroLexico("Erro")
if len(char) > 0:
fila.enfileirar(char)
return fila
"""
Executa análise lexica transformando a expressao em fila de objetos:
Transforma inteiros em ints
Flutuantes em floats
e verificar se demais caracteres são validos: +-*/(){}[]
:param expressao: string com expressao a ser analisada
:return: fila com tokens
"""
pass
示例14: analise_sintatica
def analise_sintatica(fila):
especiais = '+-*/(){}[]'
filaObjeto = Fila()
caracter = ''
if not(len(fila)): raise ErroSintatico('')
while len(fila):
atual = fila.desenfileirar()
if atual in especiais:
if len(caracter):#Verificanto se é int ou float
if '.' not in caracter:
filaObjeto.enfileirar(int(caracter))
else: filaObjeto.enfileirar(float(caracter))
caracter = ''
filaObjeto.enfileirar(atual)
else: caracter += atual
if len(caracter):
if '.' not in caracter: caracter = int(caracter)
else: caracter = float(caracter)
filaObjeto.enfileirar(caracter)
return filaObjeto
示例15: analise_sintatica
def analise_sintatica(fila):
novafila=Fila()
if fila.vazia():
raise ErroSintatico;
save=''
while not fila.vazia():
item=fila.desenfileirar()
if num(item):
save=int(item)
if fila.vazia():
novafila.enfileirar(save)
return novafila
if fila.primeiro()!='.':
novafila.enfileirar(save)
elif item=='.':
item=fila.desenfileirar()
save=float(save)
save+=(float(item))/(10**(len(item)))
novafila.enfileirar(save)
else:
novafila.enfileirar(item)
return novafila