首页 > 解决方案 > C:对字符串进行标记,将逗号计为标记

问题描述

作为练习,我必须编写一个非常简单的组装处理器的汇编程序。该处理器具有带有零个、一个或两个操作数的指令。例如:

HELLO: add r7, B

在这条指令中,HELLO是在这一行定义的标签,是add指令助记符,r7意思是“寄存器#7”,并且B是对其他地方定义的标签的引用。

此行必须分解为以下标记:

((LABELDEF "HELLO") (INSTRUCTION "add") (REGISTERREF 7) (COMMA) (LABELREF "B"))

给我带来麻烦的是操作数之间的逗号。根据规范,逗号可能会或可能不会被两边的空格包围。(与 末尾的冒号相反HELLO:,它必须与标签相邻。)我认为必须将逗号解析为单独的标记,因为它是语法的强制性部分,不能被视为空格.

我想出了几个实现选项:

您认为最好的选择是什么?你能分享一下你在类似项目中的经验吗?

标签: cscanftokenizestrtok

解决方案


推荐阅读