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 a, b, c, d top [ // stores parts of the phone number while it // is parsed through char tempString1[4], tempString2[4]; ] -> ( a b c ) a[ '0' <= a&&a <='9' ] b[ '0' <= b&&b <='9' ] c[ '0' <= c&&c <='9' ] [ tempString1[0]=a; tempString1[1]=b; tempString1[2]=c; tempString1[3]=0; ] -> ( " " a b c ) a[ '0' <= a&&a <='9' ] b[ '0' <= b&&b <='9' ] c[ '0' <= c&&c <='9' ] [ tempString2[0]=a; tempString2[1]=b; tempString2[2]=c; tempString2[3]=0; ] -> ( "-" a b c d ) a[ '0' <= a&&a <='9' ] b[ '0' <= b&&b <='9' ] c[ '0' <= c&&c <='9' ] d[ '0' <= d&&d <='9' ] [ printf("Got valid phone number: (%s) %s-%c%c%c%c\n", tempString1, tempString2, a, b, c, d); return true; ] ]