- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我几乎已经为我的系统编程类(class)完成了 SIC 汇编程序的编码,但我在标记化部分遇到了困难。
例如,拿这行源码来说:
格式(自由格式)为:{LABEL} OPCODE {OPERAND{,X}} {COMMENT}
curl 表示该字段是可选的。
此外,每个字段必须至少用一个空格或制表符分隔。
ENDFIL LDA EOF COMMENT GOES HERE
上面的代码更容易组织,但下面的代码片段给我带来了困难。
RSUB COMMENT GOES HERE
我的代码将读入注释的第一个词,就好像它是一个操作数一样。
这是我的代码:
//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 不依赖于 OPERAND,所以我知道 RSUB OPCODE 之后的所有内容都可以被视为注释,但是如果错误的源代码在 OPERAND 字段中包含一个值,或者如果 OPCODE 依赖于OPERAND 缺少 OPERAND 值,我该如何补偿?我需要将这些标记为错误并打印出错误的 OPERAND 值(或缺少)。
我的问题是:如何防止代码的注释部分被视为操作数?
最佳答案
在我见过的汇编语言(和其他编程语言一样)中,有一个分隔符来标记注释:例如注释前的分号:
ENDFIL LDA EOF ;COMMENT GOES HERE
RSUB ;ANOTHER COMMENT GOES HERE
然而,在你的语法中,你能否通过行中它前面的空格数量来判断某物是否是注释,例如是因为在操作码和注释之间有两个(不仅仅是一个)空白事件吗?
{LABEL}<whitespace>OPCODE<whitespace>{OPERAND{,X}}<whitespace>{COMMENT}
关于c++ - 标记 SIC 汇编程序源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/908847/
我需要下载youtube视频并将其转换为mp3。是否有任何可维护的[sic] gem 用于从youtube下载视频? 最佳答案 不是gem,而是可以在shell中运行的可执行文件youtube-dl。
我编写了一个 SIC 汇编程序,除了 I/O 方面外,一切似乎都运行良好。 我已经将目标代码加载到内存中(将 char 格式转换为机器表示形式),但是当我调用 SICRun();执行代码时,我收到一条
我意识到这是一个不必要的问题,但是......为什么我不能使用 reduce 将字符数组转换为字符串? 例如, let str = "this is a string" let clist = Arr
我几乎已经为我的系统编程类(class)完成了 SIC 汇编程序的编码,但我在标记化部分遇到了困难。 例如,拿这行源码来说: 格式(自由格式)为:{LABEL} OPCODE {OPERAND{,X}
我目前正在研究 SIC 汇编程序并扫描以下文件中的行: begin START 0 main LDX zero copy LDCH str1, x S
使用Ambari,This is comment for WebHcat Service是“服务选择”步骤中的最终选择。 如果我没有选择此服务,那么Customize Services步骤将无限期挂起
有一个网络服务,在它的 onDelete 方法中处理数据;所以,我需要用我的 DELETE 请求传输一些数据......实际上我完全不知道如何在 Perl 中做到这一点:( 有没有人对此有任何想法?也
嗨,我正在我的大学上学习系统软件类(class),并且正在使用 SIC 编写汇编代码。我已经用 C 编写了代码。所以我将其翻译为 SIC,并且我有一个关于 SIC 变量策略的问题。我可以重复使用人口来
当我对我的一些 Java 代码运行自动批量测试时,我遇到了一个奇怪的“Invalid Packet Lenght”(错误的拼写方式)错误,我希望有人之前遇到过这个错误或者可以指出我在正确的方向。 通过
我正在使用 Edgar 的 10-Ks。为了协助文件管理和数据分析,我想创建一个表,其中包含每个文件的路径、提交的公司的 CIK 编号(这是由 SEC 颁发的唯一 ID)以及它所属的 SIC 行业代码
我的 Controller 上有一些 POST Action ,它们是从一对 GET Action 中命中的。当验证失败时,我想呈现 POST 来自的操作的 View 。例如: ~/accounts
My Mac 应用程序旨在编辑和分析图形,用户可以在文件系统的任何位置创建和存储这些图形。我去找用户让他们用 [NSOpenPanel openPanel] 和一个内联完成处理程序 block 打开一
tl:dr - 我有一行 prolog,在一个版本的 Prolog (SWI) 中工作正常,但在另一个版本 (TuProlog) 中则不行。 我正在将脚本从 SWI prolog 移植到 Tuprol
我是一名优秀的程序员,十分优秀!