C++ 解析器帮助程序不工作

C++ 解析器帮助程序不工作,c++,parsing,C++,Parsing,--> --->a | b --->1 | 1 应该先从a或b开始,然后再从1开始。a或b之后有多少个1并不重要。例如:a1、b1、b111111、a111 我输入的所有内容都无效,但这应该是有效的:a1、b1、b111111、a111 /* <S> --> <A><B> <A> ---> a | b <B> ---> 1 | 1 <B> It suppose to be vaild for exam

--> --->a | b --->1 | 1

应该先从a或b开始,然后再从1开始。a或b之后有多少个1并不重要。例如:a1、b1、b111111、a111
我输入的所有内容都无效,但这应该是有效的:a1、b1、b111111、a111

/*
<S> --> <A><B>
<A> --->  a | b
<B> --->  1 | 1 <B>

It suppose to be vaild for example: a1, b1, b111111, a111
*/
#include <iostream>
#include<stdlib.h>  // for the exit(1) function
using namespace std;

char text[100];
char ToBeChecked;

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


int main()
{
    cout<<"Enter a string(max. 100 characters"<<endl;
    cin>>text;

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

    if(ToBeChecked = '\0')
        cout<<"Valid"<<endl;
        else
        cout<<"Invalid"<<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; everytime move on to next one
    index++; //update index
    return text[index]; //return the value of index
}

//<S> --> <A> <B>
void SProd()
{
    AProd();
    BProd();
}

//<A> --->  a | b
void AProd()
{
   if(ToBeChecked == 'a'){
       ToBeChecked = lexical();
   }
   else
   {
       if(ToBeChecked == 'b'){
           ToBeChecked = lexical();
       }
    }
 }

 //<B> --->  1 | 1 <B>
 void BProd()
 {
     if(ToBeChecked != '1')
     {
         cout<<"Invalid"<<endl;
         exit(1);
     }
     else
         while (ToBeChecked == '1')
             ToBeChecked = lexical();
 }
/*
--> 
--->a | b
--->  1 | 1 
假设它是有效的,例如:a1、b1、b111111、a111
*/
#包括
#包含//用于退出(1)功能
使用名称空间std;
字符文本[100];
炭化;
char词法()//识别字符
void SProd();
无效AProd();
void BProd();
int main()
{

你能仔细看这条线吗

if(ToBeChecked = '\0')

它是做什么的,为什么不是你想要的呢?

仔细看这行

if(ToBeChecked = '\0')

它是做什么的,为什么这可能不是你想要的?

你应该重新格式化你的帖子,这样你就可以问一些问题。我输入的所有内容都是无效的,但这应该是有效的:a1、b1、b111111、A111这是一条语句。你的问题是什么?这里有问题吗?你的AProd函数不会检查错误,所以你最终会打印出一些无效输入的有效内容。以下是帮助你构建一个更好问题的指南:你应该重新格式化你的帖子,这样你就可以问一些问题。我输入的所有内容都无效,但这应该是有效的:a1、b1、b111111、A111这是一个语句。你的问题是什么?这里有问题吗?你的建议函数不检查错误,因此您最终将打印一些无效输入的有效值。以下是一个帮助您构建更好问题的指南:谢谢!!!我知道我做的一切都是对的,所以我很困惑为什么它不起作用。我从没想过我错了。如果(ToBeChecked='\0')谢谢!!!我知道我做的每件事都是对的,所以我很困惑为什么它不起作用。我从没想过我错了。如果(ToBeChecked=='\0')