/*** Função que confere um programa ***/ int program() { if(declaracoes()) { if(bloco()) { if(match(EOF)) { return 1; } else return 0; } else return 0; } else return 0; }
/*** Função que confere um procedimento ***/ int procedimento() { if(match(PROCEDURE)) { if(ident()) { if(parametros()) { if(declaracao()) { if(bloco()) { return 1; } else return 0; } else return 0; } else return 0; } else return 0; } else return 0; }
int main() { int n, i, /*soma = 0,*/ numSub; printf("Informe a quantidade de elementos: "); scanf("%i", &n); numSub = testa_tamanho(n); if (numSub) { for(i=1;i<=numSub;i++){ if (bloco(i) == -1) { printf("Sequencia não m-alternante!\n"); return (EXIT_SUCCESS); } } printf("Sua sequencia eh %i-alternante!\n", numSub); } else printf("Sua sequencia nao eh m-alternante!\n"); return 0; }
/*** Função que confere um comando ***/ int comando() { if(match(PRINT)) { if(match(LPARENT)) { if(lista_argumentos()) { if(match(RPARENT)) { return 1; } else return 0; } else return 0; } else return 0; } else if(match(IF)) { if(match(NOT)) return 1; if(expr_relacional()) { if(match(OR)||match(AND)) return 1; if(match(THEN)) { if(comando()) { if(else_opc()) { return 1; } else return 0; } else return 0; } else return 0; } else if(match(LPARENT)) { if(expr_relacional()) { if(match(RPARENT)) { if(match(OR)||match(AND)) return 1; if(match(THEN)) { if(comando()) { if(else_opc()) { return 1; } else return 0; } else return 0; } else return 0; } else return 0; } else return 0; } else return 0; } else if(ident()) { if(match(ASSIGN)) { if(expr()) { if(match(PONTOVIRGULA)) { if(comando()) { if(comandos()) return 1; return 1; } else return 1; } else return 0; } else if(match(NUM)) { return 1; } else return 0; } else return 0; } else if(match(FOR)) { if(ident()) { if(match(ASSIGN)) { if(expr()) { if(match(TO) || match(DOWNTO)) { if(expr()) { if(match(DO)) { if(comando()) { if(comandos()) return 1; return 1; } else return 0; } else return 0; } else return 0; } else return 0; } else return 0; } else return 0; } else return 0; } else if(chamada_proc()) { return 1; } else if(bloco()) { return 1; } else if(match(WRITELN)||match(WRITE)) { if(match(LPARENT)) { if(literal()) { while(match(VIRGULA)) { if(expr()) { continue; } else if(literal()) { continue; } else if(expr()) { return 1; } else { return 0; } } if(match(RPARENT)) { return 1; } else return 0; } else if(ident()) { while(match(VIRGULA)) { if(ident()) { continue; } else if(literal()) { continue; } else if(expr()) { return 1; } else { return 0; } } if(match(RPARENT)) { return 1; } else return 0; } else if(match(RPARENT)) { return 1; } else return 0; } else return 0; } else if(match(READLN)) { if(match(LPARENT)) { if(lista_ident()) { if(match(RPARENT)) { return 1; } else return 0; } else return 0; } else return 0; } else if(match(BREAK)||match(READKEY)) { if(match(PONTOVIRGULA)) { return 1; } else return 0; } else if(match(WHILE)) { if(match(LPARENT)) { if(expr_relacional()) { if(match(RPARENT)) { if(match(DO)) { if(comando()) { if(comandos()) return 1; return 1; } else return 0; } else return 0; } else return 0; } else return 0; } else if(expr_relacional()) { if(match(DO)) { if(comando()) { return 1; } else return 0; } else return 0; } else return 0; } else return 1; }
void programa(void) { bloco(); }