Notepad ++ UDL:折叠开始和结束的问题

时间:2013-11-22 12:55:57

标签: notepad++

我想正确折叠以下Z80程序集摘录的部分内容,但我无法完成:

.ORG $9D93
        .DB     t2ByteTok, tAsmCmp

    Increase:
        LD      A, B
        CP      255
        JR      Z, KeyLoop
        INC     B
        JR      Display

    Decrease:
        LD      A, B
        CP      0
        JR      Z, KeyLoop
        DEC     B
        JR      Display

.END

在此摘录中,应创建三个折叠区域:

  • #1从.ORG $ 9D93到.END
  • #2从“增加:”到“减少:”之前的行
  • #3从“减少:”到“.END”
  • 之前的行

有两个问题:

  • 我能够通过在“折叠代码1样式”和“结束”作为关闭标记中将关键字“ORG”设置为开放标记来创建第一个折叠。有趣的是它不能用“.ORG”和“。END”作为代币。例如。现在,如果缺少点,则可以创建折叠。我是否必须以任何方式逃脱这一点?
  • 我无法完成第二和第三次折叠。我尝试添加“:”作为开放令牌,但是要在Close令牌中添加什么?这将是下一次折叠开始或结束之前的线。如何在UDL中表达?

1 个答案:

答案 0 :(得分:2)

请理解折叠设计用于配对构造。构造

If (a)
|
|    If (b)
|    |
|    |    Print
|    |
|    End If
|
End If

将按预期折叠,但在您的情况下评估为:

.ORG $9D93
|        .DB     t2ByteTok, tAsmCmp
|
|    Increase:
|    |    LD      A, B
|    |    CP      255
|    |    JR      Z, KeyLoop
|    |    INC     B
|    |    JR      Display
|    |
|    ? (NO MATCH)
|
|    Decrease:
|    |    LD      A, B
|    |    CP      0
|    |    JR      Z, KeyLoop
|    |    DEC     B
|    |    JR      Display
|    |
|    ? (NO MATCH)
|
.END

虽然这不是您想要达到的目的,但尝试以这种方式添加.END,您将看到所有3个折叠按预期工作:

.ORG $9D93
|        .DB     t2ByteTok, tAsmCmp
|
|    Increase:
|    |    LD      A, B
|    |    CP      255
|    |    JR      Z, KeyLoop
|    |    INC     B
|    |    JR      Display
|    .END
|
|    Decrease:
|    |    LD      A, B
|    |    CP      0
|    |    JR      Z, KeyLoop
|    |    DEC     B
|    |    JR      Display
|    .END
|
.END

据我了解Notepad ++中的UDL,您的问题中建议的折叠风格无法通过UDL实现。也许它可能适用于内置的N ++语言,它们不受简化的UDL逻辑的约束。为了您的信息,UDL会被有意识地简化,以便为大多数人保持UI和逻辑的可管理性。 (我不打算搜索我最近阅读它的地方,很抱歉没有链接到最后一句的来源。)

检查N ++的内部工作原理,您可以添加自己的内置语言(而不是UDL),这将符合您的要求。

编辑:我最近发现了这条评论:考虑另一个文本编辑器,SynWrite,它可以提供更灵活的词法分析器。请阅读Synw自述文件中的词法分析器教程。 - Alextp 2013年10月25日19:46