Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ICSharpCode.TextEditor的Lisp语法高亮显示_C#_Syntax Highlighting_Common Lisp_Icsharpcode_Text Editor - Fatal编程技术网

C# ICSharpCode.TextEditor的Lisp语法高亮显示

C# ICSharpCode.TextEditor的Lisp语法高亮显示,c#,syntax-highlighting,common-lisp,icsharpcode,text-editor,C#,Syntax Highlighting,Common Lisp,Icsharpcode,Text Editor,是否有一个用于ICSharpCode.TextEditor的公共Lisp语法突出显示.xshd文件?我还没有在谷歌上找到一个,而编写语法突出说明文件的格式是如此糟糕,以至于我自己也做不出一个很好的格式。我可以突出显示基本的关键字,但不能做更多 它需要具备以下功能: 突出显示常见的lisp关键字,例如list,dolist,readlineλ等 突出显示defun、defmacro、defvar等后面的单词的语法,以便在文本(defun a()…)中突出显示a。它不必是完整的,因为我可以添加更多

是否有一个用于ICSharpCode.TextEditor的公共Lisp语法突出显示.xshd文件?我还没有在谷歌上找到一个,而编写语法突出说明文件的格式是如此糟糕,以至于我自己也做不出一个很好的格式。我可以突出显示基本的关键字,但不能做更多

它需要具备以下功能:

  • 突出显示常见的lisp关键字,例如
    list
    dolist
    readline
    <代码>λ等
  • 突出显示
    defun
    defmacro
    defvar
    等后面的单词的语法,以便在文本
    (defun a()…)
    中突出显示
    a
    。它不必是完整的,因为我可以添加更多,只要一两个就可以展示它是如何完成的
  • 突出显示符号,如
    :a
  • 突出显示后引号和单引号表单中的引用列表,以及引用列表中的“取消高亮”转义表单(通过
    @、
    等转义)
  • 突出显示正在调用的函数的名称。例如,在文本
    (a b c)
    中,需要突出显示
    a
  • 可选:我错过的任何其他有用的内容(我是lisp新手,所以我不知道可以突出显示的所有内容)

有人知道在哪里可以获得ICSharpCode.TextEditor的公共Lisp语法突出显示文件,该文件具有这些功能吗?

下面是一个方案高亮显示的开始。不是很花哨,但展示了递归如何处理规则集

<SyntaxDefinition name="Scheme" extensions=".sls;.sps;.ss;.scm" 
     xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
  <Color foreground="Green" name="Comment" />
  <Color foreground="Blue" name="Syntax" />
  <Color foreground="Blue" name="Library Syntax" />
  <Color foreground="Blue" name="Auxilliary Syntax" />
  <Color foreground="DarkMagenta" name="Procedure" />

  <RuleSet>
    <Import ruleSet="Expression"/>
  </RuleSet>

    <RuleSet name="Expression">
        <Span color="Comment" multiline="false">
            <Begin>;</Begin>
        </Span>
    <Span color="Comment" multiline="true" >
      <Begin>\#\|</Begin>
      <End>\|\#</End>
    </Span>
    <Span ruleSet="Expression" multiline="true" >
      <Begin fontWeight="bold">\(</Begin>
      <End fontWeight="bold">\)</End>
    </Span>
    <Span  ruleSet="Expression" multiline="true">
      <Begin fontWeight="bold">\#\(</Begin>
      <End fontWeight="bold">\)</End>
    </Span>

    <Keywords color="Library Syntax">
      <Word>import</Word>
      <Word>export</Word>
      <Word>library</Word>
    </Keywords>

    <Keywords color="Syntax">
      <Word>define</Word>
      <Word>set!</Word>
      <Word>lambda</Word>
      <Word>begin</Word>
      <Word>if</Word>
      <Word>cond</Word>
      <Word>let</Word>
      <Word>letrec</Word>
    </Keywords>

    <Keywords color="Auxilliary Syntax">
      <Word>else</Word>
    </Keywords>

    <Keywords color="Procedure">
      <Word>map</Word>
      <Word>cons</Word>
      <Word>car</Word>
    </Keywords>

  </RuleSet>

</SyntaxDefinition>

;
\#\|
\|\#
\(
\)
\#\(
\)
进口
出口
图书馆
定义
设置
兰姆达
开始
如果
康德
让
莱特雷克
其他的
地图
欺骗
汽车

“Ping”我,如果你得到答案,我也希望这个方案:)@leppie我怀疑我会得到答案,但我会很快设置一个悬赏。你使用的是什么版本的ICSharpCode.TextEditor?我也许可以看看,我已经试过3.2和那个最新版本(4.something)。如果你真的找到了,我很乐意赏金给你。代码应该相对简单,我以前为xacc.ide和VS2008为IronScheme都做过代码。这就是我从Ruby.xshd开始所做的。你知道如何突出括号中的第一个单词吗?比如在
(a b c)
a
会被突出显示。在Ruby one中,它有
,它使
前面的单词变成蓝色(
)。我试过
MarkNext
,但它不起作用。你能想出什么办法吗?在规则中使用肯定的lookbehind断言regex应该起作用,但它不起作用:(你如何使用正则表达式?你必须告诉它它们是正则表达式而不是纯文本吗?尽管这不是我所需要的,谢谢你的尝试,有50个代表:)