In most programming lanuages, the compiler caries a preprocessing step to determ
ID: 3891304 • Letter: I
Question
In most programming lanuages, the compiler caries a preprocessing step to determine if certain statements will compile. For instance it may check to see if parentheses match. Write a Java program that simulates the actions of a preprocessor, to detect if certain Java constructs are syntactically correct. Table 1 shows the types of Java statement fomats under consideration, and also example of each statement. Table 1 Example intx 3+ (10-4) *(10+ 4) public void displayint n) Format Statement data type expression Method t nameparameter) statement int att new int[n]; System.out paintin x2)% class class Name public class MyParser dt fields public static void main(Stg arg tb> Nameparameter>) display (10); method (paramete) static void displayint x) «attrib> rt method()Explanation / Answer
CODING:
JAVA PROGRAM
import java.util.Stack;
import java.util.*;
import java.io.*;
class Preprocessor
{
public static boolean balance_Chek(String inStr12)
{
Stack<Character> s_st1 = new Stack<Character>();
for(int k1 = 0; k1 < inStr12.length(); k1++)
{
char let = inStr12.charAt(k1);
if(let == '[' || let == '{' || let == '('||let=='/')
{
switch(let)
{
// FORSQUARE BRACKET
case '[':
s_st1.push(let);
break;
// FOR CURLY BRACE
case '{':
s_st1.push(let);
break;
// FOR BRACKETS
case '(':
s_st1.push(let);;
break;
//FOR COMMANDS
case '/':
char t=inStr12.charAt(k1+1);
if(t=='*')
s_st1.push(let);
break;
default:
break;
}
}
else if(let == ']' || let == '}' || let == ')'||let=='*')
{
if(s_st1.empty())
return false;
switch(let)
{
// FORSQUARE BRACKET
case ']':
if (s_st1.pop() != '[')
return false;
break;
// FOR CURLY BRACE
case '}':
if (s_st1.pop() != '{')
return false;
break;
// FOR BRACKETS
case ')':
if (s_st1.pop() != '(')
return false;
break;
//FOR COMMANDS
case '*':
if(inStr12.charAt(k1+1)=='/')
if (s_st1.pop() != '/')
return false;
break;
default:
break;
}
}
}
if(s_st1.empty())//CHECK STACK IS EMPTY
return true;
return false;
}//EMD METHOD
}
//TEST CLASS
public class MyPreprocessor
{
//MAIN METHOD
public static void main (String [] args)
{
//FileReader AND BuffeRedreader TO READ FROM FILE
FileReader fk=new FileReader("tet.txt");
BufferedReader bk=newBufferedReader(fk);
Preprocessor p;
String preLine;
//READING FROM FILE
while((preLine=br.readLine())!=null)
{
//DISPLAY THE STRING AS WELL AS CHECK ITS BALANCED DELIMITERS
System.out.println("Line is: "+preLine +" is Balanced?"+balance_Chek(preLine));
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.