加载中…
正文 字体大小:

用source-highlight将Matlab代码转换为高亮HTML(又续)——处理多行注释

(2012-10-24 11:57:46)
标签:

sourcehighlight

matlab

多行注释

分类: 计算机与 Internet
    之前在《用source-highlight将Matlab代码转换为高亮HTML(续)——处理Command Syntax》中给出的代码,并不能正确处理多行注释的情况,比如IronPythonObject.m中(见《在Matlab中使用IronPython(十五)——操作Dynamic Objects》)有这样一段:
if isa(p, 'char') && numel(p)==1
    %{
      For a char array with a single element,
      Matlab will convert it to a Char type rather than
      String. However, we need a String for IronPython
    %}
    p = System.String(p);
end

使用之前的source-highlight代码处理结果如下:
if isa(p, 'char'&& numel(p)==1
    %{
      For char array with single element,
      Matlab will convert it to Char type rather than
      String. However, we need String for IronPython
    %}
    System.String(p);
end

    没有正确给%{ %}中的多行注释上色。昨天我修改了之前的代码,如下:
# --2012.10.23--
# --AM 11:00--
# --Source-Highlight2.1.2--
# --Windows XP 32--
# --xialulee.spaces.live.com--
# --matlab.lang--

keyword = "break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while"

keyword = '^\s*(break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while)(?=\s)'

include "function.lang"

state command start '^\s*[a-zA-Z][\w]*(?=\s)(?!\s+\.?[*/+-:]\s+\w)(?!\s+=)' begin
        comment start "%"
        string delim '[[:blank:]]' '[^%;]*'
end

comment delim "%{" "%}" multiline nested
comment start "%"

string delim '(?<![\w.])\'' "'" escape "''"

    和以前相比,只增加了一行:
comment delim "%{" "%}" multiline nested
然而,虽然只增加了一行,但是仍然有两点非常重要,需要注意。
    首先是位置。新增的描述多行注释的代码,一定要放在单行注释的代码
comment start "%"
的前面。如果不这样的话,当source-highligh遇到%{时,因为发现了%,就会与单行注释匹配,而不当作多行注释处理。
    第二点,一定要加上"nested",否则无法正确处理下面的情况
%{
  abc
  %{
    def
  %}
  ghi
%}
不带nested的处理结果:
%{
  abc
  %{
    def
  %}
  ghi
%}

其中的ghi没有变成绿色。加了nested的处理结果:
%{
  abc
  %{
    def
  %}
  ghi
%}



Creative Commons License
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议进行许可。允许非商业转载,但应注明作者及出处。
作者:xialulee
最初发布于:2012年10月24日,http://blog.sina.com.cn/xialulee

0

阅读 评论 收藏 转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有