julia - 可用作宏中运算符的 ASCII 字符序列

标签 julia

RecipesBase.jl @recipe宏使用了几个由 ASCII 字符构成的特殊运算符,即 -->:= .这些字符序列似乎有一些特殊的属性,可以将它们解析为 Expr .比较 -->-- :

julia> 1 --> 2
ERROR: syntax: invalid syntax 1 --> 2

julia> 1 -- 2
ERROR: syntax: invalid operator "--"

julia> :(1 --> 2)
:($(Expr(:-->, 1, 2)))

julia> :(1 -- 2)
ERROR: syntax: invalid operator "--"

有趣的是,1 --> 2:--> 的表达式头解析, 而其他二元运算符,包括 Unicode 二元运算符,例如 (类型为 \uparrow + TAB ),被解析为表达式头 :call :
julia> dump(:(1 --> 2))
Expr
  head: Symbol -->
  args: Array{Any}((2,))
    1: Int64 1
    2: Int64 2

julia> dump(:(1 ↑ 2))
Expr
  head: Symbol call
  args: Array{Any}((3,))
    1: Symbol ↑
    2: Int64 1
    3: Int64 2

所以,我有几个相关的问题:
  • 怎么了 -->:= ? (编辑:换句话说,为什么要特别解析这些字符序列?)
  • 是否有其他 ASCII 字符序列的行为类似于 -->:=因此可以在宏中用作运算符吗?
  • 是否有文档列出了 ASCII 字符的各种“特殊”序列?
  • 最佳答案

    -->:=由 Julia 解析器专门解析。

    看看这个文件:
    https://github.com/JuliaLang/julia/blob/f54cdf45a9e04f1450ba22142ddac8234389fe05/src/julia-parser.scm

    它列出了所有经过特殊解析的字符序列,我很确定您也可以从中获得关联性。

    关于julia - 可用作宏中运算符的 ASCII 字符序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58365731/

    相关文章:

    camera - 实时摄像头输入到 Julia-lang

    arrays - 通过将数组 B 附加到数组 A 而不更改数组 A 的值,在 Julia 中定义数组(C)

    memory - 在 Julia 中提取和收集生成器的随机子样本的有效方法

    julia - euler 29 项目的 julia 代码给出的错误答案

    linux - 无法运行 julia 文件 - 接近意外标记的语法错误

    julia - 如何在宏中将字符串转换为特定的枚举类型?

    julia - Julia 中的分析/内存分配

    julia - 在 Julia 0.7 中使用 linspace

    julia - SLURM sbatch 是否会自动跨节点复制用户脚本?

    arrays - 将 Julia 函数应用于数组的嵌套数组