主题:希望大侠们能帮我看看这个问题,不好编啊,感觉头疼,能不能用简洁的c++程序实现?最好80行以内。
maowang猫王
[专家分:0] 发布于 2011-11-29 12:29:00
就是一个词法分析器程序,希望大家能帮帮我,不胜感激!!!
要求实现编译器的以下功能:
(1) 按规则拼单词,并转换成二元式形式
(2) 删除注释行
(3) 删除空白符 (空格、回车符、制表符)
(4) 列表打印源程序,按照源程序的行打印,在每行的前面加上行号,并且打印出每行包含的记号的二元形式
(5) 发现并定位错误
回复列表 (共3个回复)
沙发
idealguy [专家分:110] 发布于 2011-11-30 10:14:00
LZ自己写一个先。
板凳
bmfw [专家分:30] 发布于 2011-12-05 20:29:00
至少先来个框架啊。。
3 楼
cgl_lgs [专家分:21040] 发布于 2011-12-06 13:52:00
你打算把多个语句写到一行上?这么些个功能要求不到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"," ")," "," ");
我来回复