Notepad ++自定义函数列表(基本)

时间:2014-11-20 17:38:36

标签: xml notepad++

我正在尝试使用Notepad ++作为PicBasic代码的新编辑器。我希望能够使用函数列表功能,但我没有使用XML的经验,而Notepad ++网站也没有解释如何很好地创建自己的函数列表解析器。

例如,xml函数头看起来像:

      <parser id="xml_node"

Notepad ++解析器如下所示:

      <parser id="xml_node" displayName="XML Node" commentExpr="&lt;!--([^-]|-(?!-&gt;))*--&gt;">
            <!-- Only match nodes with at least one attribute -->
            <function
                mainExpr="&lt;[\w\?]+[\t ]+\w+[\t ]*=[\t ]*&quot;[^&quot;]+&quot;"
                displayMode="$functionName">
                <functionName>
                    <nameExpr expr="[^&lt;]*"/>
                </functionName>
            </function>
        </parser>

在Basic中,我的函数标题如下所示:

     Function1:

如何编写解析器以拾取这些函数头?如果由于某种原因这不起作用,我可以在每个函数上面有一个标题注释,如下所示:

     ;Function1
     'Funtcion1

我确实知道Named Bookmark插件,但这是一种慢得多的导航方式。如果你能以一种方式写下你的答案,这将有助于其他人看到这一点,知道如何为他们自己的代码语言编写解析器。

编辑:命名书签功能仅适用于C ++,HTML,...不适用于自定义语言文件。所以我甚至无法使用它。

1 个答案:

答案 0 :(得分:1)

我假设你正在使用Bruce Snyder(我)的PBASIC Notepad ++用户定义语言。不幸的是,用户定义语言和自定义文件扩展的Notepad ++(v6.6.9)函数列表功能似乎被打破了。

您可以通过将“c”代码放入.bs2(PBASIC)文件并设置functionList.xml文件来查看“c”语言的已知工作代码的重命名副本,从而自行测试。

功能列表功能的np ++文档位于此Notepad++ Function List页面上。关联标签'ext ='和'userDefinedLangName ='(在'associationMap'部分中,使用一个或另一个)应该导致np ++使用你的解析器代码(在'parser'部分中),但它没有工作

这是functionList \ AssociationMap条目应该是:

<association ext=".bs2" id="pbasic_function2"/>

此外,为了防止您不熟悉它,解析器使用正则表达式为其查找内容指定过滤器。这就是看起来神秘的字符串。

PBASIC使用刻度标记进行评论(从任何地方到EOL) PBASIC函数从一行的开头开始,第一个字符是一个字母,名称的其余部分可以是字母数字,它们以冒号结尾。

以下是我为解析器提出的建议,但我无法在np ++中测试它:

<parser id="pbasic_function" displayName="PBASIC Function" commentExpr="('.*)?$">
    <function
        mainExpr="^[a-zA-Z]\w*:"
        displayMode="$functionName">
        <functionName>
            <nameExpr expr="\w+"/>
        </functionName>
    </function>
</parser>

我在Python中测试了各个regexp表达式。

希望有所帮助。