首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个Ragel文件会产生隐式转换错误?(Ragel与D)

为什么这个Ragel文件会产生隐式转换错误?(Ragel与D)
EN

Stack Overflow用户
提问于 2013-09-30 15:22:29
回答 1查看 131关注 0票数 0

我有以下(非常简单的) Ragel文件scanner.rl

代码语言:javascript
复制
void lex(string data) {
    int cs, act, top;
    auto p = data.ptr;
    typeof(p)
        pe = &data[$ -1],
        eof = pe,
        ts,
        te;

    %%{
        machine scanner;

        identifier = alpha . alnum**;

        main := |*
            identifier => { ("Identifier: " + data[ts..te]).writeln; };
            space;
        *|;

        write data;
        write init;
        write exec;
    }%%
}

void main() {
    "this is a test".lex;
}

我使用scanner.rlscanner.d转换为ragel -D scanner.rl。当我试图用D编译生成的dmd scanner.d文件时,我会得到以下错误消息:

D(97):错误:不能隐式地将const(字节)*的表达式(&_scanner_actions[cast(ulong)_scanner_from_state_actionscast(ulong)cs])转换为字节* scanner.d(110):错误:不能隐式转换const(char)*的表达式(&_scanner_trans_keys[cast(ulong)_scanner_key_offsetscast(ulong)cs])到char* scanner.d(166):错误:不能隐式转换表达式(&_scanner )_actions[cast(ulong)_scanner_trans_actionscast(ulong)_trans])类型的const(字节)*到字节* scanner.rl(22):错误:不能隐式地将类型为immutable(char)*的表达式(ts)转换为ulong scanner.d(186):Error:不能隐式地将const(字节)*的表达式(&_scanner_actions[cast(ulong)_scanner_to_state_actionscast(ulong)cs])转换为字节*

也许我错过了什么重要的东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-30 22:27:26

您确定ragel正在生成D2代码吗?看来它不见了康斯特..。查看ragel的源代码,看起来ragel -D生成了D1,ragel -E生成了D2,尽管这并没有在--帮助中得到记录!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19097954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档