4
如何解析更多的代碼行?如何解析Julia中的多行字符串?
這是工作:
julia> eval(parse("""print("O");print("K")"""))
OK
這不是工作:
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
順便說一句,如果我嘗試一行行我有其他問題。例如:
julia> parse("""for i in 1:3""")
:($(Expr(:incomplete, "incomplete: premature end of input")))
雖然:
julia> eval(parse("""for i in 1:2
println(i)
end"""))
1
2
謝謝!這是鼓舞人心的! :)似乎在一行中有多個表達式有問題。我編輯你的迴應以在代碼中顯示它。但是沒想到它會需要同行評審......你可以在3:4 \ n print(i)\ nend \中檢查eval(parseall(「print(1); print(2)\ n \ (n))''和'eval(parseall(「print(1)\ nprint(2)\ n \ n我在3:4 \ n打印(i)\ nend \ n」))' – Liso
@Liso您的例子的確如此錯誤,它與分析器在找到分號時生成':toplevel'表達式有關。用'ex.head ==:頂層?替換'push!(exs,ex)'?追加!(exs,ex.args):push!(exs,ex)'爲我解決了這個問題。 –
Alexander_Morley和@Dan_Getz我喜歡接受固定版本。我們如何做到這一點? – Liso