作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
eval(parse("""pri-6ren">
如何解析更多行代码?
这是有效的:
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
最佳答案
parse
旨在解析单个表达式(至少这就是文档所说的:鉴于此,我实际上对您的第一个示例有效而没有抛出错误感到有点惊讶......)。
如果要解析多个表达式,则可以利用以下事实:
parse
可以接受第二个参数 start
这告诉它去哪里parseall
自己发挥作用。曾经有一个基地,但我不确定现在有没有。
编辑:仍在测试中,请参见下文
# modified from the julia source ./test/parse.jl
function parseall(str)
pos = start(str)
exs = []
while !done(str, pos)
ex, pos = parse(str, pos) # returns next starting point as well as expr
ex.head == :toplevel ? append!(exs, ex.args) : push!(exs, ex) #see comments for info
end
if length(exs) == 0
throw(ParseError("end of input"))
elseif length(exs) == 1
return exs[1]
else
return Expr(:block, exs...) # convert the array of expressions
# back to a single expression
end
end
关于julia - 如何在 Julia 中解析多行字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46364922/
我是一名优秀的程序员,十分优秀!