C语言如何判断 // 后面的字符串是注释, 而#后面的是命令

nabasasun 2013-10-25 01:29:51
比如这样:

#goto *black001
//跳转到black001这个标签
#stop
//在这里停止运行,其实不用写,因为已经跳到了下面的标签,只是说明这里程序中断了。

#set i=0
//给i赋值



*black001
//在这里继续运行
#i=i+1
//这里出错,因为i赋值的命令没有运行,goto到了black001了

//+++++++++++++++++++++++++++++++++++++++++++++++++



每行字符串用const char * str 表示
...全文
277 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2013-10-27
  • 打赏
  • 举报
回复
请LZ自行学习“有限状态自动机”。
nabasasun 2013-10-26
  • 打赏
  • 举报
回复
#goto *black001 //跳转到black001这个标签 如果一行中有命令也有注释呢
nabasasun 2013-10-25
  • 打赏
  • 举报
回复
引用 12 楼 ForestDB 的回复:
} 忘了strtok吧 打好基础
不用strtok的话就不好拆分单词了
赵4老师 2013-10-25
  • 打赏
  • 举报
回复
参考《编译原理》中的词法分析和有限状态自动机。
ForestDB 2013-10-25
  • 打赏
  • 举报
回复
# include <stdio.h> # include <ctype.h> void ltrim(char * line) { char * p = line; char * start = line; while (*p != '\0' && isblank(*p)) p++; while (*p != '\0') { *start++ = *p++; } *start = '\0'; } int is_comment_line(char * line) { if (line[0] == '/' && line[1] == '/') return 1; else return 0; } int main() { char line[BUFSIZ] = " // this is a comment line"; ltrim(line); if (is_comment_line(line)) printf("it is comment line\n"); return 0; } 忘了strtok吧 打好基础
nabasasun 2013-10-25
  • 打赏
  • 举报
回复
引用 10 楼 adeng1919 的回复:
可以看看编译原理一类的书,词法分析和语法分析
那书我看过,不过说了一大堆奇怪的东西,比如IR还有什么的,我完全看不懂
懒懒的吉他手 2013-10-25
  • 打赏
  • 举报
回复
可以看看编译原理一类的书,词法分析和语法分析
nabasasun 2013-10-25
  • 打赏
  • 举报
回复
引用 8 楼 ForestDB 的回复:
LZ是不是不知道该如何写“移除行首空白”的代码? LZ是不是不知道该如何写“判断以//开头”的代码?
移除空格我知道用strtok,但是详细判断的代码不会
ForestDB 2013-10-25
  • 打赏
  • 举报
回复
LZ是不是不知道该如何写“移除行首空白”的代码? LZ是不是不知道该如何写“判断以//开头”的代码?
nabasasun 2013-10-25
  • 打赏
  • 举报
回复
引用 4 楼 ForestDB 的回复:
简单的分析即可: 读一行 移除行首空白 如果行以//开头,则该行是注释 如果行以#开头,则该行是命令
我知道要把空格去掉,而且是否注释和命令我已经在1楼说过了, 我现在求的是写法
super_admi 2013-10-25
  • 打赏
  • 举报
回复
逐行扫描,每行以"\n"或者"\\"结尾 以"#"拆分每行,则除了下标为0的元素,其它都是命令。
做或不做 2013-10-25
  • 打赏
  • 举报
回复
这个就是 所谓的语法分析器了词法分析器 Yacc 百度学学 中心思想是状态机思想 这个状态机可是个好东西 成为大神的必须课
ForestDB 2013-10-25
  • 打赏
  • 举报
回复
简单的分析即可: 读一行 移除行首空白 如果行以//开头,则该行是注释 如果行以#开头,则该行是命令
nabasasun 2013-10-25
  • 打赏
  • 举报
回复
引用 1 楼 xiaohuh421 的回复:
你是想自己写编译器还是脚本解释器? 这是普通的字符串处理 遇到第一个字符是"#"就判断是命令 遇到现从个连续的//就认为是注释. 只是一个规则罢了.
所以就是想定这样的规则啊,就是不知道写法
alan19931103 2013-10-25
  • 打赏
  • 举报
回复
编译器就是知道
xiaohuh421 2013-10-25
  • 打赏
  • 举报
回复
你是想自己写编译器还是脚本解释器? 这是普通的字符串处理 遇到第一个字符是"#"就判断是命令 遇到现从个连续的//就认为是注释. 只是一个规则罢了.

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧