public void Expr() { if (l.LexKind == Tok.ID || l.LexKind == Tok.INUM) { l.NextLexem(); } else { SyntaxError("expression expected"); } }
public void Expr() { // здесь мы проверяем на выржение if (l.LexKind == Tok.ID || l.LexKind == Tok.INUM) { // если число, то дальше ожидаем плюс или минус l.NextLexem(); if (l.LexKind == Tok.PLUS || l.LexKind == Tok.MINUS) { l.NextLexem(); // рекуррентно вызовем функию для того, чтобы продолжить проверку Expr(); } } else { SyntaxError("expression expected"); } }
public void Expr() { if (l.LexKind == Tok.ID || l.LexKind == Tok.INUM) { l.NextLexem(); if (l.LexKind == Tok.PLUS || l.LexKind == Tok.MINUS || l.LexKind == Tok.MULT || l.LexKind == Tok.DIVISION) { l.NextLexem(); Expr(); } } else if (l.LexKind == Tok.LEFT_BRACKET) { l.NextLexem(); Expr(); if (l.LexKind == Tok.RIGHT_BRACKET) { l.NextLexem(); } else { throw new LexerException(""); } } else { SyntaxError("expression expected"); } }
private void ExprA() { if (l.LexKind == Tok.PLUS || l.LexKind == Tok.MINUS) { l.NextLexem(); ExprT(); ExprA(); } }
public void Assign() { l.NextLexem(); // пропуск id if (l.LexKind == Tok.ASSIGN) { l.NextLexem(); } else { SyntaxError(":= expected"); } Expr(); }
public void For() { if (l.LexKind != Tok.FOR) { SyntaxError("FOR is absent"); } l.NextLexem(); Assign(); if (l.LexKind != Tok.TO) { SyntaxError("TO is absent"); } l.NextLexem(); Expr(); if (l.LexKind != Tok.DO) { SyntaxError("DO is absent"); } l.NextLexem(); if (l.LexKind == Tok.BEGIN) { Block(); } else { Statement(); } }
public void A() { if (l.LexKind == Tok.PLUS || l.LexKind == Tok.MINUS) { l.NextLexem(); T(); A(); } }
public void Expr() { // проверка на сумму или разность // проверка на переменную или число if (l.LexKind == Tok.ID || l.LexKind == Tok.INUM) { l.NextLexem(); // проверка на плюс или минус if (l.LexKind == Tok.PLUS || l.LexKind == Tok.MINUS) { l.NextLexem(); // повторный вызов для того чтобы продолжить проверку Expr(); } } else { SyntaxError("expression expected"); } }
public void CheckIdNumBrackets() { // Если ID или число, берем следующую лексему if (l.LexKind == Tok.ID || l.LexKind == Tok.INUM) { l.NextLexem(); } // Если текущая лексема левая скобка else if (l.LexKind == Tok.LEFT_BRACKET) { // Переходим к следующей лексеме l.NextLexem(); // Находим все лексемы до правой скобки Expr(); // Если нашли правую скобку, // то переходим к след лексеме // иначе ошибка if (l.LexKind == Tok.RIGHT_BRACKET) { l.NextLexem(); } else { SyntaxError(") expected"); } } else { SyntaxError("expression expected"); } }