好吧,从某种意义上来说,s表达式本质上是“抽象语法”,因为它们只是抽象语法树的具体语法,因此任何语言都可以表示为s表达式,并可以通过s表达式命令进行操作。因此,syntax-ppss谈到“表达式”只是讨论抽象语法树的Lisp方法。
但是实际上,syntax-ppss通常不适用于任何模式。它从根本上针对类似于Lisp的语言,并且如果某种语言的具体语言与Sexps的差异太大,那么使用Sexp命令来操纵该语言就不再有意义。可以,但是抽象表示和具体语法之间的差距太大,这会使大多数命令违反直觉。
但是,的某些基础架构syntax-ppss是相当通用的。主要模式通常会尝试将其插入,因为这使它们可以与许多内置的Emacs功能很好地配合使用,并为Smartparens等其他第三方软件包提供通用接口。
值得注意的是,syntax-ppss依赖语法表来获取字符串和注释。语法表按其语法类别将各个字符分类。有成对的定界符,字符串定界符和注释字符的类。
在几乎所有编程语言中,字符串和注释的结构都非常相似:字符串通常用特殊的定界符括起来。注释也可以具有特殊的定界符,或者以特定字符开头并延伸到行尾。这些结构可以很容易地在语法表中捕获,并且几乎所有主要模式都定义了适当的语法表,如果只是为了从Emacs的句法强化中受益。
因此,syntax-ppss几乎可以在任何语言中对字符串和注释都适用,但是其他功能的支持和“有用性”各不相同。