Lex 程序计算第二个字符为“a”的字符串的数量

Lex program to count number of strings having ‘a’ as the second character

我编写了一个程序来计算以 'a' 作为字符串的第二个字符的字符串的数量。我尝试使用 lex 运算符 的几种模式,也尝试使用 lex 程序启动条件 ,但其中 none 有效。这是我写的程序:

%{
  #include<stdio.h>
  #include<string.h>
  int count=0;
%}
%%
(^[a-z])/(a) {count++;}
%%
int yywrap(void){}
int main()
{   
  yylex();
  printf("\n%d strings with 'a' as second letter",count);
  return 0;
}

这不是一个计算第二个字符为 'a' 的所有字符串的程序。为此你应该改变

(^[a-z])/(a) {count++;}

进入

^.a          {count++;}

(我应该也承认一个大写 'A',如果你有兴趣,但谁知道你有这个规格 post)

正如您编写的正则表达式,它是一个程序,用于计算以字母开头并以 'a' 字符继续的行数(post 上下文运算符 / 在这里没有太多要说的,因为第二个 'a' 字符将被再次读取,没有结果,因为词法分析器的其余部分没有考虑到这一事实。唯一的事情是你只会将行的第一个字符放入变量 yytext。但是你不使用 yytext 做任何事...

可能,如果你post你正在尝试做的事情(整体情况)可以给你更多的帮助,但你没有...