回 帖 发 新 帖 刷新版面

主题:希望大侠们能帮我看看这个问题,不好编啊,感觉头疼,能不能用简洁的c++程序实现?最好80行以内。

就是一个词法分析器程序,希望大家能帮帮我,不胜感激!!!

要求实现编译器的以下功能:
(1)    按规则拼单词,并转换成二元式形式
(2)    删除注释行
(3)    删除空白符 (空格、回车符、制表符)
(4)    列表打印源程序,按照源程序的行打印,在每行的前面加上行号,并且打印出每行包含的记号的二元形式
(5)    发现并定位错误

回复列表 (共3个回复)

沙发

LZ自己写一个先。

板凳

至少先来个框架啊。。

3 楼

你打算把多个语句写到一行上?这么些个功能要求不到80行代码?除非用特定的库解决。
auto_ptr<TStringList>lgs(new TStringList);
lgs->LoadFromFile("file.c");

// 去掉行注释,不过如果//出现在字符串里则还是有问题,楼主自己细化
for (int i = 0; i < lgs->Count; ++i)
{
    int pos = lgs->Strings[i].Pos("//");
    if (pos == 0) continue;
    lgs->String[i]=lgs->Strings[i].SubString(1,Pos);
}

// 将回国、Tab及多个连续空格都转成一个空格:)
String strLgs = ReplaceStr(ReplaceStr(ReplaceStr(lgs->Text,"\n"," "),"\t"," "),"  "," ");

我来回复

您尚未登录,请登录后再回复。点此登录或注册