#include extern "C" { #include #include #include } #define dot 1 #define id 2 #define error 3 int A(char*,int&); int B(char*,int&); int NextToken(char*,int&); // function main -------------------------- int main() { int spp=0; char s[]="...a..."; if (A(s,spp)) cout << "syntax correct\n"; else cout << "syntax error\n"; return 0; }//end main // function A ------------------------------ int A(char* s,int& spp) { if (!B(s,spp)) return 0; if (NextToken(s,spp) != id) return 0; if (!B(s,spp)) return 0; return 1; }//end A // function B ------------------------------ int B(char* s,int& spp) { int spp1 = spp; if (NextToken(s,spp) != dot) { spp = spp1; return 1; } if (!B(s,spp)) { spp = spp1; return 1; } return 1; }//end B // function NextToken ------------------------ int NextToken(char* s,int& spp) { if (s[spp]=='.') { spp++; return dot; }else if ('a'<=s[spp] && s[spp]<='c') { while('a'<=s[spp] && s[spp]<='c') spp++; return id; }else return error; }//end NextToken