Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

why my lexical analyzer displaying indentifer, when all of the variables are not

ID: 3701079 • Letter: W

Question

why my lexical analyzer displaying indentifer, when all of the variables are not indentifer in the dat file in java.

import static java.io.StreamTokenizer.TT_EOF;
import static java.io.StreamTokenizer.TT_NUMBER;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.StreamTokenizer;


public class LexicalAnalyzer {

public static void main(String[] args) throws IOException
{
FileReader fileReader =null;
BufferedReader bufferedReader=null;
try
{
fileReader=new FileReader("lexical.dat");
bufferedReader = new BufferedReader(fileReader);
StreamTokenizer line =new StreamTokenizer(bufferedReader);
while (line.nextToken() != TT_EOF)
{

int token=line.nextToken();
String TOKEN ="";
TOKEN=Integer.toString(token);
System.out.println(TOKEN);
if(TOKEN.equals(TT_NUMBER))
{
System.out.println("Digit" +TT_NUMBER);
}
else if((TOKEN.equals("if"))||(TOKEN.equals ("else"))||(TOKEN.equals("int"))||(TOKEN.equals("while"))||(TOKEN.equals("double")))
{
System.out.println("Keyword");
}
else if (TOKEN.equals('{'))
{
System.out.println("Left Braces");
}
else if(TOKEN.equals ('}'))
{
System.out.println("Right Braces" );

}
else if (TOKEN.equals (')'))
{
System.out.println("Right Paranthesis");

}
else if (TOKEN.equals('('))
{
System.out.println("Left Paranthesis") ;
}
else if((TOKEN.equals ('+'))||(TOKEN.equals('-'))||(TOKEN.equals('*'))||(TOKEN.equals('%'))||(TOKEN.equals('='))||(TOKEN.equals('/')))
{
System.out.println("Binaryoperation");
}
else
System.out.println("Identifier" );

}
}// end of try block


catch(Exception e)
{
System.out.println(e);
}// end catch block
finally
{
if(bufferedReader!=null)
{
bufferedReader.close();
}
} //end finally

} // end of main
} //edn of class

errors:

-3
Identifier
-3
Identifier
-2
Identifier
-1
Identifier

here is the dat file

int x=2+variable/ number;

Explanation / Answer

import static java.io.StreamTokenizer.TT_EOF;

import static java.io.StreamTokenizer.TT_NUMBER;

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

import java.io.StreamTokenizer;

public class LexicalAnalyzer {

public static void main(String[] args) throws IOException {

FileReader fileReader = null;

BufferedReader bufferedReader = null;

try {

fileReader = new FileReader("lexical.dat");

bufferedReader = new BufferedReader(fileReader);

StreamTokenizer line = new StreamTokenizer(bufferedReader);

int token;

while ((token = line.nextToken()) != TT_EOF) {

String TOKEN = "";

TOKEN = Integer.toString(token);

System.out.println(token);

//If token value is greater than 10 then it is a char. So type casting the token to char.

if(token>10){

TOKEN = (char)token+"";

}

else if(token==StreamTokenizer.TT_WORD){

//If token is word then we can get the string value by using sval

TOKEN = line.sval;

}

if (token==TT_NUMBER) {

System.out.println("Digit" + line.nval);

} else if ((TOKEN.equals("if")) || (TOKEN.equals("else")) || (TOKEN.equals("int"))

|| (TOKEN.equals("while")) || (TOKEN.equals("double"))) {

System.out.println("Keyword");

} else if (TOKEN.equals("{")) {

System.out.println("Left Braces");

} else if (TOKEN.equals("}")) {

System.out.println("Right Braces");

} else if (TOKEN.equals(")")) {

System.out.println("Right Paranthesis");

} else if (TOKEN.equals("(")) {

System.out.println("Left Paranthesis");

} else if ((TOKEN.equals("+")) || (TOKEN.equals("-")) || (TOKEN.equals("*")) || (TOKEN.equals("%"))

|| (TOKEN.equals("=")) || (TOKEN.equals("/"))) {

System.out.println("Binaryoperation");

} else{

System.out.println("Identifier");

}

}

} // end of try block

catch (Exception e) {

System.out.println(e);

} // end catch block

finally {

if (bufferedReader != null) {

bufferedReader.close();

}

} // end finally

} // end of main

} // edn of class