All pastes #1708380 Raw Edit

bla

public c v1 · immutable
#1708380 ·published 2009-12-09 15:38 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#include "minako.h"yystype yylval;int functiondefintion(int token);void type(int token);void statementlist(int token);void block(int token);int lookahead, akToken;void nextToken(){  akToken = lookahead;  lookahead = yylex();}void delToken(int token){  if (akToken == token) nextToken();  else {    fprintf(stderr, "ERROR: Token %i erwartet, aber %i eingelesen\n", token, akToken);    exit(-1);  }}void parseError(char *function, int line, int token){  fprintf(stderr, "ERROR: Funktion %s, Zeile %i, Token %i \n", function, line, token);  exit(-1);}/*Beginn main*/int main(int argc, char ** argv) {    if (argc == 1) {    yyin = stdin;    printf("Lese von stdin\n");  } else {       yyin = fopen(argv[1], "r");      if (yyin==NULL) {	fprintf(stderr, "ERROR: %s existiert nicht!\n", argv[1]);	return(-1);      }  }  lookahead = yylex();  nextToken();  while (akToken != EOF) {   if (functiondefintion(akToken) == 0) {}   else parseError("main", yylineno, akToken);  }  fclose(yyin);  return(0);}/*Beginn der Grammatik*/int functiondefintion(int token){  type(token);  delToken(ID);  delToken(40);  delToken(41);  if (akToken == 123) delToken(123);  else if (akToken == KW_BEGIN) delToken(KW_BEGIN);    else parseError("functiondefintion", yylineno, akToken);      statementlist(akToken);    if (akToken == 125) delToken(125);  else if (akToken == KW_END) delToken(KW_END);    else parseError("functiondefintion", yylineno, akToken);  return(0);}void type(int token){  if ((token == KW_BOOLEAN) || (token == KW_FLOAT) || (token == KW_INT) || (token == KW_VOID)) {    delToken(token);  }  else parseError("type", yylineno, akToken);}void statementlist(int token){  if (token == block(token);}void block(int token){  if (token == 123) delToken(123);  else if (token == KW_BEGIN) delToken(KW_BEGIN);    else parseError("block", yylineno, token);      statementlist(akToken);    if (akToken == 125) delToken(125);  else if (akToken == KW_END) delToken(KW_END);    else parseError("block", yylineno, akToken);    /*oder STATEMENT */}