首先,通过一些简单的示例来了解使用flex。以下flex输入指定了一个扫描程序scanner,当它遇到字符串’username’将其替换为用户的登录名:
12%%username printf( "%s", getlogin() );默认情况下,任何与flex scanner不匹配的文本都将被复制到输出中,因此,该scanner的最终效果是仅将每次出现的用户名替换了。在此输入中,只有一个规则(rule)。’username’是模式(pattern),而’print’就是action。’%%’符号标志着rules的开始。另一个简单的例子
1234567891011121314 int num_lines = 0, num_chars = 0;%% ++num_lines; ++num_chars;. ++num_chars;%%int main() { yylex(); printf( "# of lines = %d, # of chars = %d ", num_lines, num_chars ); }该scanner计算其输入中的字符数和行数。除了有关字符数和行数的最终报告外,它不产生任何输出。第一行