我在python中的运行有问题。我已经通过在线下载安装文件并从命令提示符中运行来安装PLY。安装是成功的。但是,我一直收到“没有模块名为ply”的错误。我把代码写在下面:
VS_Code一直在import语句的ply和ply.yacc部分下放一些乱七八糟的行。
from ply import lex
import ply.yacc as yacc
tokens = (
'MINUS',
'TIMES',
'DIV',
'LPAREN',
'RPAREN',
'NUMBER',
)
t_ignore = ' \t'
t_MINUS = r'-'
t_TIMES = r'\*'
t_DIV = r'/'
t_LPAREN = r'\('
t_RPAREN = r'\)'
def t_NUMBER( t ) :
r'[0-9]+'
t.value = int( t.value )
return t
def t_newline( t ):
r'\n+'
t.lexer.lineno += len( t.value )
def t_error( t ):
print("Invalid Token:",t.value[0])
t.lexer.skip( 1 )
lexer = lex.lex()
precedence = (
( 'nonassoc', 'UMINUS' ),
( 'left', 'TIMES', 'DIV' ),
( 'left', 'MINUS' )
)
def p_sub( p ) :
'expr : expr MINUS expr'
p[0] = p[1] - p[3]
def p_expr2uminus( p ) :
'expr : MINUS expr %prec UMINUS'
p[0] = - p[2]
def p_mult_div( p ) :
'''expr : expr TIMES expr
| expr DIV expr'''
if p[2] == '*' :
p[0] = p[1] * p[3]
else :
if p[3] == 0 :
print("Can't divide by 0")
raise ZeroDivisionError('integer division by 0')
p[0] = p[1] / p[3]
def p_expr2NUM( p ) :
'expr : NUMBER'
p[0] = p[1]
def p_parens( p ) :
'expr : LPAREN expr RPAREN'
p[0] = p[2]
def p_error( p ):
print("Syntax error in input!")
parser = yacc.yacc()
res = parser.parse("5-8*6-2") # the input
##res = parser.parse("3+5*8/2") # the input
print(res)发布于 2022-11-11 23:54:25
我认为所发生的事情很可能是在您的语言源文件所在的文件夹中没有" ply“文件夹,并且您还没有向您的sys.path中添加这个文件夹的位置。这将导致准确的行为,你所指的,与粗糙的线条。我怀疑你也会在你的“问题”窗口中看到一个“导入”层无法被解决的消息。
https://stackoverflow.com/questions/74169232
复制相似问题