Advertisement
Guest User

QParser2.c

a guest
Oct 23rd, 2014
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.49 KB | None | 0 0
  1. #include <string.h>
  2. #include <stdio.h>
  3. char lineImage[1000];
  4. int tokenPtr;
  5.  
  6. char lexer(){
  7.     int len = strlen(lineImage);
  8.     if (tokenPtr < len){
  9.         tokenPtr++;
  10.         return lineImage[tokenPtr];
  11.     }
  12.     else{
  13.         printf("Exceeded maximum program size of %d\n", tokenPtr);
  14.         return '*';
  15.     }
  16. }
  17.  
  18. int backup(){
  19.     if(tokenPtr >= 0){
  20.         tokenPtr--;
  21.         return 1;
  22.     }
  23.     else{
  24.         printf("Error in source program.\n");
  25.         return 0;
  26.     }
  27. }
  28.  
  29. int STMT(){
  30.     return 1;
  31. }
  32. int Q(){
  33.     char c = lexer();
  34.     if(c == '\n' || STMT()){
  35.         return 1;
  36.     }
  37.     else{
  38.         return 0;
  39.     }
  40. }
  41.  
  42. int pgm(){ //REPLACE THIS AND TEST IT
  43.  
  44.     char c = lexer();
  45.     while(c != '\n') c = lexer();
  46.     if(c == '\n'){
  47.         printf("Found new line\n");
  48.         c = lexer();
  49.         if(STMT()){
  50.             printf("Found stmt\n");
  51.             if(Q()){
  52.                 printf("Found Q\n");
  53.                 return 1;
  54.             }
  55.         }
  56.     }
  57.     else{
  58.         printf("c = %c\n", c);
  59.         printf("Didn't find Q\n");
  60.         return 0;
  61.     }
  62.     /**
  63.         if(next token is '\n' || STMT || Q)
  64.             return 1;
  65.         else
  66.             return 0;
  67.     */
  68. }
  69.  
  70.  
  71.  
  72. int main(int argc, char * argv[]){
  73.     // if(argc == 1){
  74.     //  printf("Need file");
  75.     //  return 0;
  76.     // }
  77.     // if(argc == 2){
  78.  
  79.     // }
  80.  
  81.     FILE * file;
  82.     file = fopen( "mac.mac" , "r");
  83.     if(file == NULL){
  84.         printf("Error");
  85.         return 0;
  86.     }
  87.  
  88.     char token;
  89.     // strcpy(lineImage,"$");
  90.  
  91.     fgets(lineImage, 1000, file);
  92.  
  93.     tokenPtr = -1;
  94.     // token = lexer();
  95.     token = '$';
  96.     if(pgm() && (token == '$')){
  97.         printf("Parse found a pgm\n");
  98.     }
  99.     else{
  100.         printf("Parse failed\n");
  101.     }
  102.  
  103.     fclose(file);
  104.  
  105.     return 1;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement