Haskell样式注解的ELisp表注解

noj0wjuj  于 2023-11-18  发布在  其他
关注(0)|答案(2)|浏览(92)

我尝试使用ELisp语法表注解设置Haskell风格的注解,但我不能完全得到它。
在Haskell中,有两种基本类型的注解
--表示以\n结尾的单行注解
{-表示以-}结尾的多行注解。应注意,这些注解可以嵌套
多行注解可通过以下方式完成:

(defvar my-syntax-table
  (let ((st (make-syntax-table)))
    (modify-syntax-entry ?{ ". 1n" st)
    (modify-syntax-entry ?- ". 23n" st)
    (modify-syntax-entry ?} ". 4n" st)
   st))

字符串
单行注解可通过以下方式完成:

(defvar my-syntax-table
  (let ((st (make-syntax-table)))
    (modify-syntax-entry ?- ". 12" st)
    (modify-syntax-entry ?\n ">" st)
   st))


基于documentation,我可以使用b设置一个替代项。但是,b适用于序列的第二个字符,在这两种情况下都是-。因此,当我试图使用替代项组合这些字符时,无法进行多行和单行注解。
我看过这件事,所以我知道这是可能的。但是,我不知道该怎么做。任何帮助都是感谢。

aij0ehis

aij0ehis1#

Haskell模式使用

(modify-syntax-entry ?\{  "(}1nb" table)
       (modify-syntax-entry ?\}  "){4nb" table)
       (modify-syntax-entry ?-  "_ 123" table)))
       (modify-syntax-entry ?\n ">" table)

字符串

oaxa6hgo

oaxa6hgo2#

我自己在实现一个带有Haskell风格注解的模式时遇到了这个问题,这似乎是解决方案:

(modify-syntax-entry ?- ".123" table)
(modify-syntax-entry ?\{ "(}1nc" table)
(modify-syntax-entry ?\} "){4nc" table)
(modify-syntax-entry ?\n ">" table)

字符串
haskell-mode中的定义并不完全正确;它们使用标志1和4设置了“B”注解样式,但“B”仅适用于标志2和标志3。使用稍新的(但决不是新的)“c”样式,您可以创建一种由任何字符区分的注解类型,而不仅仅是内部字符。
通过将-标记为标点符号而不是注解起始符,可以避免在注解开始时使用单个破折号。
有关注解语法标志如何工作的更多详细信息,请参阅documentation(自最初提出该问题以来已进行了改进)。

相关问题