glob [ #include #include main() { int diff; char pn1[] = "650 858-4217"; char pn2[] = "802 944-1255"; char pn3[] = "415 92323-5478"; // fails phoneNumber(&diff, pn1, strlen(pn1)); phoneNumber(&diff, pn2, strlen(pn2)); phoneNumber(&diff, pn3, strlen(pn3)); // doesn't print getchar(); } ] parse phoneNumber [ anychar[] X,Y,Z -> ( num[X,3] " " num[Y,3] "-" num[Z,4] ) [ printf("Got valid phone number: (%s) %s-%s\n",X,Y,Z); return true; ] ] parse num [in[char* output, int length] anychar[ ] W anyindex n -> W W[ '0' <= W[n]&&W[n] <='9' && n