首先将逻辑式以首字母的形式存入数组,然后遍历该数组。
1. 判定‘a’(and)和'o'(or);
- 如果数组首位是'a'或者'o',直接error;
- 如果不是首位,则数组的前一位必须是'f'(false)||'t'(true),后一位必须是'f'||'t'||**'n'(not)**(很容易被忽略,例如逻辑式:true and not false),不满足任一条件则error;
2. 判定'f'和't';
- 如果位于首位,则后一位必须是'a'||'o',不满足则error;
- 如果不位于首位,则前一位必须是'a'||'o'||'n',后一位必须是'a'||'o',不满足则error;
3. 判定'n';
- 如果当下遍历到'not',则需要用一个**while循环找到该'n'后面第一个不是'n'的位置**(易忽略,例如:not not not true),该位置必须是'f'||'t',否则则error。