69,336
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<vector>
#include <algorithm>
using namespace std;
int main(){
vector<int> v;
int a=3;
for(int i=0;i<10;i++){
v.push_back(i);
}
if (find(v.begin(), v.end(), a) != v.end()){
cout<<"a is in v!"<<endl;
}
else{
cout<<"a is not in v!"<<endl;
}
if(find(v.begin(),v.end(),int(50))==v.end())
cout<<"50 is not in v!"<<endl;
system("pause");
}
%{
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Token
{
int type;
char sVal[256]; //标识符有效长度小于8个
};
%}
%option noyywrap
digit [0-9]
number {digit}+
letter [_a-zA-Z]
alnum [_a-zA-Z0-9]
identifier {letter}{alnum}*
newline \n
whitespace [ \t]+
%start COMMENT
%%
"program" {return 3;}
"var" {return 4;}
"procedure" {return 5;}
"begin" {return 6;}
"end" {return 7;}
"if" {return 8;}
"then" {return 9;}
"else" {return 10;}
"while" {return 11;}
"do" {return 12;}
"call" {return 13;}
"integer" {return 14;}
"real" {return 15;}
"+" {return 16;}
"-" {return 17;}
"*" {return 18;}
"/" {return 19;}
"~" {return 20;}
":" {return 21;}
"(" {return 22;}
")" {return 23;}
"<" {return 24;}
"<=" {return 25;}
">" {return 26;}
">=" {return 27;}
":=" {return 28;}
"<>" {return 29;}
"," {return 30;}
";" {return 31;}
"." {return 32;}
"&" {return 33;}
"|" {return 34;}
"!" {return 35;}
"//" ;
{identifier} {return 1;}
{number} {return 2;}
{newline} {;}
{whitespace} {;}
. {return 99;}
%%
struct Token getToken()
{
struct Token token;
token.type = yylex();
strcpy(token.sVal,yytext); // yytext是一个字符串指针 ,yyleng是词文的长度
return token;
}
int main(int argc, char *argv[])
{
if(argc > 1)
{
FILE *file;
file = fopen(argv[1], "r");
if(!file)
{
fprintf(stderr, "could not open %s\n", argv[1]);
exit(1);
}
yyin = file;
}
while(1)
{
struct Token t=getToken();
if(t.type==0) break;
if(t.type==99){printf("(ERROR:%s)\n", t.sVal);}
else printf("(%d,%s)\n", t.type,t.sVal);
}
return 0;
}
/*
int yywrap()
{
return 1;
}
*/
求助2楼,求助大牛。
%{
/* C code to be copied verbatim */
#include <stdio.h>
%}
%option noyywrap
%%
[0-9]+ {printf("Saw an integer: %s\n", yytext);}
%%
//c codes blow
//.......
也可以定义一个yywrap函数,并且返回1(返回1代表不继续扫描其他文件)
最后一个错误是由于文件里没有定义main函数,在.l文件最后加入main函数就行了。
如果能看懂英文的话推荐OReilly的《flex and bison》这本书,讲的比较详细。