小编Dia*_*o25的帖子

Ace编辑器中的递归块

我们有自己的脚本语言.语言非常简单,但它有一个"独占"的东西:字符串是使用'['和']'定义的(所以"test"将是[test]),这些大括号可以在彼此内部:

lateinit([concat([test], [blah])])
Run Code Online (Sandbox Code Playgroud)

此外,没有逃脱的角色.如何将此块解析为一个字符串(从而突出显示该[concat([test], [blah])]块)?我目前有以下规则:

     { token: 'punctuation.definition.string.begin.vcl',
       regex: '\\[',
       push: 
        [ 
          { token: 'punctuation.definition.string.end.vcl',
            regex: '\\]',
            next: 'pop' },
          { defaultToken: 'string.quoted.other.vcl' } ],
        },
Run Code Online (Sandbox Code Playgroud)

但是,正如你可能已经猜到的那样,这将在测试结束时停止支撑:' [ concat([test ],[blah])]'...

其他例子是:

setexpratt(1, [if(comparetext([yes], [no]), msg([test expression]))]);
terminator([confirm([Are you sure you want to exit?])]);
registerfunction([testfunction], 1, 3, [], [msg(concat([Argument 1: ], p(1), [, Argument 2: ], p(2), [, Argument 3: ], p(3)))]);
Run Code Online (Sandbox Code Playgroud)

javascript regex ace-editor

7
推荐指数
1
解决办法
335
查看次数

将整数转换为对象并返回导致InvalidCastException

我试图在ListViewItem的Tag对象中存储3个变量.我现在这样做:

lvi.Tag = new object[] { value1, value2, value3 };
Run Code Online (Sandbox Code Playgroud)

这不是问题,但是当我尝试使用此代码恢复它时:

object[] objs = (lvi.Tag as object[]);
int t = (int)objs[0];
Run Code Online (Sandbox Code Playgroud)

它给了我一个例外System.InvalidCastException.我试过调试它,但调试器给了我正确的信息

objs = object[] { 1, 93234, 0 }
Run Code Online (Sandbox Code Playgroud)

有谁知道发生了什么?

.net c# object

1
推荐指数
1
解决办法
6031
查看次数

标签 统计

.net ×1

ace-editor ×1

c# ×1

javascript ×1

object ×1

regex ×1