[VC MFC C++ flex bison] flex example(Pascal-like language scanner)
2008-02-01 18:13
555 查看
//scanner.l
%{
/* need this for the call to atof() below */
#include <math.h>
%}
DIGIT [0-9]
ID [a-z][a-z0-9]*
%%
{DIGIT}+ {
printf( "An integer: %s (%d)/n", yytext,
atoi( yytext ) );
}
{DIGIT}+"."{DIGIT}* {
printf( "A float: %s (%g)/n", yytext,
atof( yytext ) );
}
if|then|begin|end|procedure|function {
printf( "A keyword: %s/n", yytext );
}
{ID} printf( "An identifier: %s/n", yytext );
"+"|"-"|"*"|"/" printf( "An operator: %s/n", yytext );
"{"[^}/n]*"}" /* eat up one-line comments */
[ /t/n]+ /* eat up whitespace */
. printf( "Unrecognized character: %s/n", yytext );
%%
main( argc, argv )
int argc;
char **argv;
{
++argv, --argc; /* skip over program name */
if ( argc > 0 )
yyin = fopen( argv[0], "r" );
else
yyin = stdin;
yylex();
}
以下方法生成:
fl scanner
%{
/* need this for the call to atof() below */
#include <math.h>
%}
DIGIT [0-9]
ID [a-z][a-z0-9]*
%%
{DIGIT}+ {
printf( "An integer: %s (%d)/n", yytext,
atoi( yytext ) );
}
{DIGIT}+"."{DIGIT}* {
printf( "A float: %s (%g)/n", yytext,
atof( yytext ) );
}
if|then|begin|end|procedure|function {
printf( "A keyword: %s/n", yytext );
}
{ID} printf( "An identifier: %s/n", yytext );
"+"|"-"|"*"|"/" printf( "An operator: %s/n", yytext );
"{"[^}/n]*"}" /* eat up one-line comments */
[ /t/n]+ /* eat up whitespace */
. printf( "Unrecognized character: %s/n", yytext );
%%
main( argc, argv )
int argc;
char **argv;
{
++argv, --argc; /* skip over program name */
if ( argc > 0 )
yyin = fopen( argv[0], "r" );
else
yyin = stdin;
yylex();
}
以下方法生成:
fl scanner
相关文章推荐
- [VC MFC C++ flex bison] flex format
- [VC MFC C++ flex bison] flex 特别action
- [VC MFC C++ flex bison] flex rules(规则)
- C++/VC/MFC字符串/文件加解密
- [C++ VC MFC] MFC消息响应机制
- C C++ VC MFC 命名规范
- [C++ VC MFC]巧妙程序自删除 仅供参考 我测试了一下不能删除自己
- vc 热键、组合键的用法 MFC c++ hotkey WM_HOTKEY
- Flex&Bison Tips(2010-08-27) 如何在VC中更好的断点调试flex&bison词法和语法分析器
- 接触VC之二:MFC类基础,C++程序编写规范
- 从C++起步到MFC实战VC++软件工程师高端培训视频教程
- C/C++、VC/MFC、嵌入式、Java/XML、数据库/多线程/网络/图形/数据结构/数学”系列学习精粹
- [C++ VC MFC] char* str="heelo"与char str[]="heelo"区别
- Flex&Bison Tips - 如何改善 flex & bison 在VC下的编辑环境
- 在vc2008 mfcC++中使用sqlite的示例
- C++、VC、MFC 计算任意函数值、计算表达式、积分、线性方程组
- C++/VC/MFC字符串/文件加解密
- VC++/MFC/C/C++ 资料下载汇总
- vc 热键、组合键的用法 MFC c++ hotkey WM_HOTKEY
- 编译原理实验-FLEX+BISON+DEV C++完美解决方案