首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标记化SIC汇编源

标记化SIC汇编源
EN

Stack Overflow用户
提问于 2009-05-26 03:51:29
回答 2查看 1.6K关注 0票数 3

我几乎已经为我的系统编程类编写了一个SIC汇编器,但我在标记化部分遇到了困难。

例如,以下面这行源代码为例:

格式(自由格式):{LABEL} OPCODE {OPERAND{,X}} {COMMENT}

卷曲表示该字段是可选的。

此外,每个字段必须至少用一个空格或制表符分隔。

代码语言:javascript
复制
ENDFIL      LDA     EOF         COMMENT GOES HERE

上面的代码更容易组织,但下面的代码片段给我带来了困难。

代码语言:javascript
复制
        RSUB                COMMENT GOES HERE

我的代码将读取注释的第一个单词,就好像它是一个操作数一样。

下面是我的代码:

代码语言:javascript
复制
//tokenize line
    if(currentLine[0] != ' ' && currentLine[0] != '\t')
    {
        stringstream stream(currentLine);
        stream >> LABEL;
        stream >> OPCODE;
        stream >> OPERAND;
        stream.str("");


        if(LABEL.length() > 6 || isdigit(LABEL[0]) || !alphaNum(LABEL))
        {
            errors[1] = 1;
        }
        else if(LABEL.length() == currentLine.length())
        {
            justLabel = true;
            errors[6] = 1;
            return;
        }
    }
    else
    {
        stringstream stream(currentLine);
        stream >> OPCODE;
        stream >> OPERAND;
        stream.str("");
    }

我的教授要求用两个版本的源代码测试汇编器--一个有错误,一个没有错误。

RSUB OPCODE不依赖于操作数,因此我理解RSUB OPCODE之后的所有内容都可以被视为注释,但是如果错误的源代码在操作数字段中包含一个值,或者如果依赖于操作数的OPCODE缺少操作数值,我该如何对此进行补偿?我需要将这些标记为错误,并打印出错误的操作数值(或缺少该值)。

我的问题是:如何防止代码的注释部分被视为操作数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-26 04:04:11

在我所见过的汇编语言中(就像在其他编程语言中一样),有一个分隔符来标记注释:例如,注释前有一个分号:

代码语言:javascript
复制
ENDFIL LDA EOF ;COMMENT GOES HERE
RSUB ;ANOTHER COMMENT GOES HERE

然而,在你的语法中,你能通过一行上它前面的空格的数量来判断它是不是一个注释,例如,在操作码和注释之间有两个(而不仅仅是一个)空格事件?

代码语言:javascript
复制
{LABEL}<whitespace>OPCODE<whitespace>{OPERAND{,X}}<whitespace>{COMMENT}
票数 -1
EN

Stack Overflow用户

发布于 2009-05-26 04:06:13

如何判断某一行中的文本是操作数还是注释?它是基于上下文吗?例如,如果OPCODE是"RSUB",那么您应该知道不需要操作数?然后,您应该根据OPCODE读取的内容对操作数执行一些魔术操作:

代码语言:javascript
复制
if (OPCODE == "RSUB") OPERAND.clear();
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/908847

复制
相关文章

相似问题

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