Wie kann ich mehr Codezeilen analysieren?Wie Parsen mehrzeiliger String in Julia?
Dies funktioniert:
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, wenn ich Linie versuchen, durch die Linie I andere Probleme haben:
julia> eval(parse("""print("O");print("K")"""))
OK
Diese nicht funktioniert. Zum Beispiel:
julia> parse("""for i in 1:3""")
:($(Expr(:incomplete, "incomplete: premature end of input")))
obwohl:
julia> eval(parse("""for i in 1:2
println(i)
end"""))
1
2
Dank! Es ist inspirierend! :) Es scheint, dass es ein Problem mit mehreren Ausdrücken in einer Zeile gibt. Ich bearbeite deine Antwort, um sie im Code anzuzeigen. Aber ich habe nicht erwartet, dass es eine Peer-Review benötigt ... Sie könnten 'eval (parseall (" print (1); print (2) \ n \ nfür i in 3: 4 \ n print (i) \ nend \ n "))' und 'eval (parseall (" drucken (1) \ nprint (2) \ n \ nfür i in 3: 4 \ n drucken (i) \ nend \ n "))' – Liso
@Liso Ihre Beispiele in der Tat Fehler, und es hat etwas mit Parser zu tun, der einen ': toplevel' Ausdruck erzeugt, wenn er ein Semikolon findet. Ersetzen Sie 'push! (Exs, ex)' durch 'ex.head ==: toplevel? append! (exs, ex.args): push! (exs, ex) 'reparierte das Problem für mich. –
Alexander_Morley und @Dan_Getz Ich akzeptiere eine feste Version. Wie können wir das machen? – Liso