A recursive parser help
<p>I'm supposed to write this c++ that take in 01 and on. for example: 01010101 but not 0,1,10,011,110. Can someone help me figure out what I need to do to fix the problem. Sorry guys the code isn't working right.I pushed ctrl+k and posted the code but everything wasn't in place. </p>

<p>What I was trying to do is that when some enter 1 than it prints invalid. if they enter 0 it prints invalid, if the enter 10 it prints invalid, if they enter 01 it prints valid, if the enter 0101 it prints valid. So 0 always have to come first and always follow by 1. another example: 0101010101 prints valid</p>

<p>Thanks Seth :). I removed the links</p>

<p>[From seth.arnold: I removed commented-out code and indented the code to follow some kind of logical pattern. Feel free to replace this with your code if you wish, indent each line by four spaces to properly format it.]</p>

<pre><code>#include &lt;iostream&gt;
#include&lt;stdlib.h&gt;  // for the exit(1) function
using namespace std;

char text[300];
char ToBeChecked;

char lexical(); //identify the characters
void SProd();
void BProd();


int main(){
    cout&lt;&lt;"Enter some strings only 1 and 0 (max. 300 characters"&lt;&lt;endl;
    cin&gt;&gt;text;

    ToBeChecked = lexical(); //identify the character; find the first letter and give it to ToBeChecked
    SProd();

    if(ToBeChecked == '\0')
        cout&lt;&lt;"Valid"&lt;&lt;endl;
    else
        cout&lt;&lt;"Invalid"&lt;&lt;endl;

    cin.get();
    return 0;
}

char lexical(){
    static int index = -1;   //a memory box named index with a value of -1; is static so it won't change.
                             //is -1 because -1 to 1 is 0; everything move on to next one
    index++; //update index
    return text[index]; //return the value of index
}

void SProd(){
    if(ToBeChecked != '0' ) {
        cout&lt;&lt;"Invalid"&lt;&lt;endl;
        exit(1);
    }
    else{
        BProd();
        ToBeChecked = lexical();
    }
}

void BProd(){
    if(ToBeChecked != '1')
    {
        cout&lt;&lt;"Invalid"&lt;&lt;endl;
        exit(1);
    }
    else
        SProd();

    ToBeChecked = lexical();
}
</code></pre>
