[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

long code with one problem

Posted on 2003-11-02
5
Medium Priority
?
243 Views
Last Modified: 2010-03-31
sorry about this code but it is very long and i fam facing problem with it
this is the code

import java.io.*;
import java.util.*;

public class SIM{  
     
      public static void main(String[] args) throws IOException {
           
      BufferedReader stdin = new BufferedReader(new FileReader("SIM.txt"));
     
  //sim1    
        String st_p = stdin.readLine();
             StringTokenizer ss=new StringTokenizer(st_p);
            String b=ss.nextToken();
             
              int a=2;
          double bc=0.02;
             
              if (!b.equalsIgnoreCase("start_program")){
                   System.out.println("Sytax error");
                         
              }
             
              else if (b.equalsIgnoreCase("Start_program")){
                                         
                        b=ss.nextToken();
 //sim1
               
                           
                     while((st_p = stdin.readLine())!=null){
                           st_p = stdin.readLine();
                     
                      if(st_p.equalsIgnoreCase("Begin_Define")){ //sim2
               
               String en_p;
               StringTokenizer st;
               String bd2;
               
               while((en_p = stdin.readLine())!=null){
                      if(en_p.equals(""))continue;  
                    st=new StringTokenizer(en_p);
                    if(st.hasMoreTokens()){
                    bd2=st.nextToken();    
                     
                  if(!bd2.equalsIgnoreCase("End_program")){  
                           while(!bd2.equalsIgnoreCase("End_Define;")) {
                   
                 if(bd2.equalsIgnoreCase("Var")) {
                         
                                       bd2=st.nextToken();                    
                               
            while(!bd2.equals(";")) {
                                                                                               
                                                      while (st.hasMoreTokens()){
                                            bd2=st.nextToken();
                                           
                                                          if(bd2.equals(":")){
                                                                
                                            bd2=st.nextToken();
                                 
                                            if(bd2.equalsIgnoreCase("Integer")||bd2.equalsIgnoreCase("real")){
                                                 System.out.println("Good Grammer");                                                
                                            }
                                            else{ System.out.println("bad Grammer");}                                        
                                        }                                      
                                    }    
                                    }
                          }
                          else if(bd2.equalsIgnoreCase("Constant")) {
                         
                                       bd2=st.nextToken();                    
                               
                                   while(!bd2.equals(";")) {
                                   
                                                      while (st.hasMoreTokens()){
                                            bd2=st.nextToken();
                                           
                                                          if(bd2.equals("=")){
                                                                
                                            bd2=st.nextToken();
                                 
                                            if(bd2.equals("+")||bd2.equals("-")){
                                                bd2=st.nextToken();
                                               
                                                if(bd2.equals(Integer.toString(a))||bd2.equals(Double.toString(bc))){
                                                  System.out.println("good Grammer");
                                                  }
                                            }
                                            else if(bd2.equalsIgnoreCase("Null")){
                                                  
                                            }
                                           
                                            else{ System.out.println("bad Grammer");}                                        
                                        }                                      
                                    }    
                              }
                        }
                    en_p = stdin.readLine();
                           st=new StringTokenizer(en_p);
                           if (st.hasMoreTokens()){
                           bd2=st.nextToken();   }
                           
                           } //sim2  
                           
                           //sim3
                     if(en_p.equalsIgnoreCase("Begin_Block")){
           
               
               while((en_p = stdin.readLine())!=null){
                      if(en_p.equals(""))continue;  
                    st=new StringTokenizer(en_p);
                    if(st.hasMoreTokens()){
                    bd2=st.nextToken();    
                     
                           while(!bd2.equalsIgnoreCase("End_Block;")) {
                                 
                                 if(bd2.equalsIgnoreCase("read")) {
                                       
                                       bd2=st.nextToken();
                                       if (bd2.equals("(")){                                             
                                             
                                             while (st.hasMoreTokens()){
                                                                               
                                        while (!bd2.equals(";")) {  
                                               bd2=st.nextToken();
                                              
                                                                if(bd2.equals(",")){
                                                                
                                                  bd2=st.nextToken();}
                                              else if (bd2.equals(")")) {
                                                    bd2=st.nextToken();
                                              }
                                          }
                                          System.out.println("read");
                                 }
                             }
                         }
                         else if(bd2.equalsIgnoreCase("write")) {
                                       
                                       bd2=st.nextToken();
                                       if (bd2.equals("(")){                                             
                                             
                                             while (st.hasMoreTokens()){
                                                                               
                                        while (!bd2.equals(";")) {  
                                               bd2=st.nextToken();
                                              
                                                                if(bd2.equals(",")){
                                                                
                                                  bd2=st.nextToken();}
                                              else if (bd2.equals(")")) {
                                                    bd2=st.nextToken();
                                              }
                                          }
                                          System.out.println("write");
                                 }
                             }
                         }
                         else if(bd2.equalsIgnoreCase("write")||!bd2.equalsIgnoreCase("read")){
                         if(st.hasMoreTokens()){
                         bd2=st.nextToken();
                         while (!bd2.equals(";")){
                               
                               if(bd2.equals(":=")){                                     
                                     bd2=st.nextToken();
                                     if(bd2.equals("(")){
                                           bd2=st.nextToken();
                                           
                               while(st.hasMoreTokens()&& !bd2.equals(")")){
                                                 bd2=st.nextToken();
                                     if(bd2.equals("*")||bd2.equals("/")){
                                                       bd2=st.nextToken();
                                                 }
                                           }
                                           bd2=st.nextToken();                                                                                
                                                            if(bd2.equals("+")||bd2.equals("-")){
                                                                  bd2=st.nextToken();
                                                      
                                                      }
                                                System.out.println("brack");      
                                                }
                                                else{
                                                            while (st.hasMoreTokens()){
                                                                  bd2=st.nextToken();
                                                            if (bd2.equals("-")||bd2.equals("+")||bd2.equalsIgnoreCase("null")){
                                                                  bd2=st.nextToken();
                                                            }
                                                            }
                                                      System.out.println("expr");      
                                                }       
                                          }
                                          else if(st.hasMoreTokens()){
                                          bd2=st.nextToken();                  
                                          }
                                                     
                         }
                          }
                      }
                    en_p = stdin.readLine();
                           st=new StringTokenizer(en_p);
                           if (st.hasMoreTokens()){
                           bd2=st.nextToken();   }
                    }
                }
                        }
                    }//sim3
                           
                           
                           
                           
                           
                           }            
                      if(st.hasMoreTokens()){            
                         bd2=st.nextToken();}
                         if(!bd2.equals(b)){
                               System.out.println(bd2);
                               System.out.println("Program name is not matching");
                               }
             if(bd2.equals(b)){
                   if (st.hasMoreTokens()){
                           bd2=st.nextToken();   }
                                                          
             if(bd2.equals(";")){
                   System.out.println("Good Grammer");
                                     return;}
                               }
                   }
                         }                                                      
              }  
          }
          
            }
      }
    }

this code reading from a text file called SIM and this file like this

start_program sa

Begin_Define

constant yaer = + 2 ;
constant ret = - 0.02 ;

var basic, grade : integer ;
var adj_salary : real ;
var comp_A_amount : real ;

end_define;

Begin_block

adj := ( grade * year ) + basic ;

ret := adj * rat ;

read ( basic , grade ) ;
write ( basic , good ) ;

end_block;

end_program sa ;

it gave me the following exception
good Grammer
good Grammer
Good Grammer
Good Grammer
Good Grammer
Exception in thread "main" java.lang.NullPointerException
        at java.util.StringTokenizer.<init>(StringTokenizer.java:119)
        at java.util.StringTokenizer.<init>(StringTokenizer.java:149)
        at SIM.main(SIM.java:99)
Press any key to continue...


can you help me please
0
Comment
Question by:badr1981
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
5 Comments
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 9669322
i suggest this one


where ever you use nextToken(), put like this

st.nextToken()==null?"":stnextToken();

hope you got my idea
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 9669330
You are using toknizer in different code areas,

so where ever it is there replace the next token with it

st.nextToken()==null?"":st.nextToken();
ss.nextToken()==null?"":ss.nextToken();

and so on
0
 
LVL 92

Accepted Solution

by:
objects earned 120 total points
ID: 9669361
You don't always check that readLine() has returned a line.
The following is setting en_p to null.

                    en_p = stdin.readLine();
                         st=new StringTokenizer(en_p);
0
 
LVL 92

Expert Comment

by:objects
ID: 9692703
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 9699010
badr1981's code
 while((en_p = stdin.readLine())!=null){
                     if(en_p.equals(""))continue;  
                    st=new StringTokenizer(en_p);

objects code
                         en_p = stdin.readLine();
                         st=new StringTokenizer(en_p);


i haven't find any basic difference between two codes. Just curious to know if there is any difference

:-)
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
In this post we will learn different types of Android Layout and some basics of an Android App.
This tutorial covers a practical example of lazy loading technique and early loading technique in a Singleton Design Pattern.
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.
Suggested Courses

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question