Comment puis-je analyser plus de lignes de code?Comment analyser une chaîne multiligne dans Julia?
Cela fonctionne:
julia> eval(parse("""print("O");print("K")"""))
OK
Ce ne fonctionne pas:
julia> eval(parse("""print("N");
print("O")"""))
ERROR: ParseError("extra token after end of expression")
Stacktrace:
[1] #parse#235(::Bool, ::Function, ::String) at ./parse.jl:237
[2] parse(::String) at ./parse.jl:232
BTW si j'essaie ligne par ligne, j'ai d'autres problèmes. Par exemple:
julia> parse("""for i in 1:3""")
:($(Expr(:incomplete, "incomplete: premature end of input")))
bien:
julia> eval(parse("""for i in 1:2
println(i)
end"""))
1
2
Merci! C'est inspirant! :) Il semble qu'il y ait un problème avec l'expression multiple dans une ligne. Je modifie votre réponse pour l'afficher dans le code. Mais ne vous attendiez pas à ce qu'il ait besoin d'un examen par les pairs ... Vous pouvez vérifier 'eval (parseall (" print (1); print (2) \ n \ npour i dans 3: 4 \ n print (i) \ nend \ n "))' et 'eval (parseall (" print (1) \ nprint (2) \ n \ npour i dans 3: 4 \ n print (i) \ nend \ n "))' – Liso
@Liso Vos exemples en effet error, et cela a quelque chose à voir avec l'analyseur qui génère une expression ': toplevel' lorsqu'il trouve un point-virgule. Remplacer 'push! (Exs, ex)' par 'ex.head ==: toplevel? append! (exs, ex.args): push! (exs, ex) 'résolu le problème pour moi. –
Alexander_Morley et @Dan_Getz J'aime accepter la version corrigée. Comment pouvons-nous faire cela? – Liso