2013-11-22 35 views
0

我想正确折叠下面的Z80装配摘录的部分,但我不能把它做:记事本++ UDL:问题与折叠的开始和结束

.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“

两个问题是:

  • 我能够通过设置关键字来创建第一折‘ORG’作为一个开放的象征‘折叠代码1点式’和” END “作为关闭令牌。有趣的是,它不适用于“.ORG”和“.END”作为标记。例如。现在可以创建一个折叠,如果点缺失。我是否必须以任何方式逃避点?
  • 我不能得到第二和第三折工作。我试图添加“:”作为开放的令牌,但要把什么放在关闭令牌?这将是下一个折叠开始或结束之前的路线。如何在UDL中表达这一点?

回答

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 

据我了解UDL在记事本++,在你的问题建议的风格折叠通过UDL是无法实现的。也许它可能用内置的N ++语言工作,这些语言不受简化的UDL逻辑限制。为了您的信息UDL被有意保留简化以保持大多数人的UI和逻辑可管理性。 (我不打算搜索我最近阅读的内容,很抱歉没有链接到最后一句的来源。)

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

编辑:我发现这条评论最近:考虑其他文本编辑器,SynWrite,它可以有更大的灵活性词法分析器。只需阅读Synw自述文件中的词法分析教程即可。 - - Alextp 13年10月25日在19:46

+0

感谢您在这么长的时间和UDL /内置语言的背景信息后的答案,我会进一步看看那些:) –

+1

@PacMani - 我有看看他们今天 - 检查目录'\ scintilla \ lexers \'在Notepad ++源文件中。包含词法分析器文件;令牌检测也在程序上处理,不仅是声明式的。这意味着你有无限的可能性来实现你所需要的并建立你自己的N ++。祝你好运:)(或者,也许你也可以看看* SynWrite *,因为我在几天前添加了我的答案) – miroxlav

+0

好东西!现在看看它:) –