7

ICSharpCode.TextEditor で使用する Common Lisp 構文強調表示 .xshd ファイルはありますか? 私はグーグルでそれを見つけることができませんでした.構文を強調表示する仕様ファイルを書くためのフォーマットは非常に惨めに文書化されているので、私は自分で非常に良いものを作ることができません. 基本的なキーワードを強調することはできますが、それ以上のことはできません。

次のものが必要です。

  • listdolist、などの一般的な Lisp キーワードを強調表示しread-lineます。lambdaなど
  • テキスト内のdefundefmacrodefvarなどの後の単語の構文強調表示が強調表示されます。もっと追加できるので、完全である必要はありません.(defun a () ...)a
  • 次のような記号を強調表示します:a
  • 逆引用符と一重引用符の両方の形式で引用符付きリストを強調表示し、引用符付きリスト内のエスケープされたフォームを「強調表示解除」します (、、,などでエスケープ@,)
  • 呼び出されている関数の名前を強調表示します。たとえば、テキスト(a b c)では、a強調表示する必要があります
  • オプション: 私が見逃したその他のことは役に立ちます (私は Lisp に慣れていないので、強調表示できるすべてのことを知りません)

これらの機能を持つ ICSharpCode.TextEditor の Common Lisp 構文強調表示ファイルをどこで入手できるか知っている人はいますか?

4

1 に答える 1

3

これがSchemeハイライターの始まりです。あまり派手ではありませんが、再帰がルールセットでどのように機能するかを示しています。

<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>
于 2011-09-02T19:04:16.493 に答える