Question: import java.io . * ; import java.util.Stack; class DelimiterChecker { private BufferedReader reader; private int lineNumber = 1 ; private int charNumber = 0 ;

import java.io.*;
import java.util.Stack;
class DelimiterChecker {
private BufferedReader reader;
private int lineNumber =1;
private int charNumber =0;
public DelimiterChecker(String fileName) throws FileNotFoundException {
reader = new BufferedReader(new FileReader(fileName));
}
public Character getNextCharacter() throws IOException {
int charCode;
char character;
while ((charCode = reader.read())!=-1){
charNumber++;
character =(char) charCode;
// Check for comments, literals, and skip
if (character =='/'){
if (reader.markSupported()){
reader.mark(1);
char nextChar =(char) reader.read();
if (nextChar =='/'){
// Single-line comment, skip until the end of the line
while (character !='
' && charCode !=-1){
charCode = reader.read();
character =(char) charCode;
charNumber++;
}
lineNumber++;
charNumber =0;
} else if (nextChar =='*'){
// Multi-line comment, skip until "*/"
boolean commentEnd = false;
while (!commentEnd && charCode !=-1){
charCode = reader.read();
character =(char) charCode;
charNumber++;
if (character =='*'){
reader.mark(1);
char next =(char) reader.read();
if (next =='/'){
commentEnd = true;
}
} else if (character =='
'){
lineNumber++;
charNumber =0;
}
}
} else {
reader.reset();
return character;
}
} else {
return character;
}
} else if (character =='"'){
// String literal, skip until the closing double quote
while ((character !='"'||(character =='"' && charCode >0 && (char) reader.read()=='\\')) && charCode !=-1){
charCode = reader.read();
character =(char) charCode;
charNumber++;
}
} else if (character =='\''){
// Character literal, skip until the closing single quote
while ((character !='\''||(character =='\'' && charCode >0 && (char) reader.read()=='\\')) && charCode !=-1){
charCode = reader.read();
character =(char) charCode;
charNumber++;
}
} else if (character =='
'){
lineNumber++;
charNumber =0;
} else {
return character;
}
}
return null; // End of file
}
public String getCurrentPosition(){
return "Line "+ lineNumber +", Char "+ charNumber;
}
}
public class DelimiterMatching {
public static void main(String[] args){
BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
String fileName;
DelimiterChecker delimiterChecker;
while (true){
try {
System.out.print("Enter the filename: ");
fileName = keyboard.readLine();
delimiterChecker = new DelimiterChecker(fileName);
break;
} catch (FileNotFoundException e){
System.out.println("File not found. Please try again.");
} catch (IOException e){
System.out.println("Error reading input. Please try again.");
}
}
Stack delimiterStack = new Stack>();
Character currentChar;
int position =1;
try {
while ((currentChar = delimiterChecker.getNextCharacter())!= null){
if ("([{".contains(currentChar.toString())){
delimiterStack.push(currentChar);
} else if (")]}".contains(currentChar.toString())){
if (deli a. A UML class diagram that includes all classes you
import java.io . * ; import java.util.Stack;

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!