本文整理汇总了C++中Lexer::domain方法的典型用法代码示例。如果您正苦于以下问题:C++ Lexer::domain方法的具体用法?C++ Lexer::domain怎么用?C++ Lexer::domain使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Lexer
的用法示例。
在下文中一共展示了Lexer::domain方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main() {
system("mode con cols=100 lines=30");
system("COLOR 0A");
while(1){
dat.init();
lexer.init();
buf.clear();
deb.init();
ending=0;
cout << "请将要运行的程序放在与本程序相同的目录下" << endl;
cout << "输入1运行程序,输入2调试程序,输入3退出程序" << endl;
int type;
while(cin >> type){
if (type == 1) {
cout << "输入要运行的程序文件名:" << endl;
break;
}
else if (type == 2) {
cout << "输入要调试的程序文件名:" << endl;
break;
}
else if(type==3) exit(0);
else {
cout << "输入不合法!请重新输入:" << endl;
}
}
string filename;
//cin >> filename;
ifstream file;
string s;
while(cin >> filename){
file.open(filename);
if(!file) cout << "输入文件名错误!重新输入:" << endl;
else break;
}
while (!file.eof()) {
getline(file, s);
buf.push_back(s);
}
if(type==2){
cout << "进入调试模式\n以下为调试器的命令,输入h即可再次查看" << endl;
cout << "列出所有代码:l\n查看变量的值:p 变量名\n设置断点:b 行号\n取消断点:nb 行号\n查看当前所有的断点的行号:wb\n下一步:n\n运行程序:r\n" << endl;
deb.wait();
}
/*buf.push_back("begin");
buf.push_back("out 123;");
buf.push_back("end");*/
int x = 0, y = 0;
bool flag=0;
while (1) {
if (x == buf.size()) break;
if (buf[x].size() == 0) {
x++;
y = 0;
continue;
}
if(buf[x][y]=='/' && y+1<buf[x].size() && buf[x][y]=='/'){
x++;
y=0;
}
if (y + 4<buf[x].size()) {
if (buf[x].substr(y, 5) == "begin") {
lexer.curx = x + 1;
lexer.cury = 0;
if(deb.next) {
cout << lexer.curx << " -> " << buf[lexer.curx] << endl;
deb.wait();
}
if(deb.is_bp(lexer.curx)){
cout << lexer.curx << " -> " << buf[lexer.curx] << endl;
deb.wait();
}
flag=1;
lexer.domain();
break;
}
}
y++;
if (y == buf[x].size()) {
x++;
y = 0;
}
}
if(!flag){
cout << "没有检测到begin" <<endl;
system("pause");
exit(0);
}
}
return 0;
}