Overview In this assignment, we will be creating an HTML Checker program that will check the syntax of HTML tags. It is similar, but different,from theSyntax Checkerwhich checked matching opening and...

1 answer below »

Overview


In this assignment, we will be creating an HTML Checker program that will check the syntax of HTML tags. It is similar, but different,from theSyntax Checkerwhich checked matching opening and closing symbol placement.


You will write a class that stores the contents of an HTML page as a queue of HTMLTags. Your class will also be able to fix invalid HTML tags. Your HTMLManager will use stacks and queues to figure out whether the tags match and fix the mistakes it finds.


There will also be a number of Instructor-provided files to help with this assignment in order to make your work a little less :-)


Topics


queues, stacks


Background on HTML


Web pages are written in a language called “Hypertext Markup Language”, or HTML. An HTML file consists of text surrounded by markings called tags. Tags give information to the text, such as formatting (bold, italic, etc) or layout (paragraph, table, list, etc). Some tags specify comments or information about the document (header, title, document type).


A tag consists of a named element betweenless-than
andgreater-than> symbols.For example, the tag for making text bold uses the elementband is written as
.


Many tags apply to a range of text, in which case a pair of tags is used:



  • An opening tag (indicating the start of the range), which is written as:

  • A closing tag (indicating the end of the range), which is written as:


So to make some text bold on a page, one would surround the text with opening and closingbtags:



  • HTML Code:
    like this

  • Displayed on screen:like this


Tags can be nested to combine effects. For example:



  • HTML Code:

    like this


  • Displayed on screen:
    like this



Some tags, such as the br tag (which inserts a line break) or the img (which inserts an image), do not cover a range of text and are considered to be “self-closing.” Self-closing tags do not need a closing tag; for a line break, only


is needed. Some web developers write self-closing tags with an optional / before the >, such as

.


Checking HTML


One problem on the web is that many developers make mistakes in their HTML code. All tags that cover a range must eventually be closed, but some developers forget to close their tags. Also, whenever a tag is nested inside another tag,

like this
, the inner tag (ifor italic, here) must be closed before the outer tag is closed. So the following tags are not valid HTML, because the should appear first:

this is invalid


This might sound like a lot if you are unfamiliar with HTML, butDon't stress!You will be provided with an algorithm for checking the validity of a series of HTML tags using stacks and queues.You will just need to follow the algorithm.


Instructions


Part 1: Get the starter files


For this assignment, you are provided with a number of starter files:HTMLChecker.zip




  • The only file that you willeditis HTMLManager.java


  • The only file that you willrunis HTMLChecker.java

  • Thetests/ foldercontains a few test HTML files

  • Theexpected_output/ foldercontains the expected "fixed" HTML for the associated test files - these are called and compared in the HTMLChecker.java file

  • The other files you willmostlyjust ignore as they are used from the HTMLChecker, except for HTMLTag.


HTMLTag


There is a provided file called HTMLTag which is the base type for your Queue (and the Stack that you will create in fixHTML), so it is fundamental that you know what methods it contains, though you will not edit it.


An HTMLTag object corresponds to an HTML tag such as



or . An HTMLTag can either be an opening tag, a closing tag, or a self-closing tag. You don’t need to construct HTMLTag objects in your code, but you will process them. The reason we use HTMLTag objects instead of just storing the tags as strings is that the class provides extra functionality that makes processing HTMLTags easier.


In particular, it provides the following methods:


































boolean isOpening()



Returns true ifthisHTML tag is an “opening” (starting) tag.



boolean isClosing()



Returns true ifthisHTML tag is an “closing” (closing) tag.



boolean isSelfClosing()



Returns true ifthisHTML tag is an “self-closing” tag.



boolean matches(other)



Returns true if the givenothertag matches (has the same tag type as)thistag; e.g., and .



HTMLTag getMatching()



Returnsa new tagthat matchesthistag but has opposite type (e.g. ifthis is , then this method will return and vice versa)



boolean equals(other)



Returns true if the givenothertag equalsthistag. Theothertag is equal if the internal element is the same asthistag’s element and has the sameopening or closing state; e.g. and .



String toString()



Returns a string representation ofthisHTML tag, such as “”.



Part 2: build HTMLManager


You need to follow the specification and algorithm below in order to make HTMLChecker work correctly. Additionally,
here is a visual walk through of the fixHTML algorithm


Actions.


























Method



Description



HTMLManager(Queue html)



The constructor takes in a Queue of HTMLTags that make up an HTML page.


If the queue passed is null, the constructor throws an IllegalArgumentException.; otherwise the HTMLManager should "remember" the passed information by storing it in its Queue field.


An empty queue (size 0) is allowed.



Queue getTags()



Returns thequeue of HTMLTags being managed.



String toString()



Returns a constructed String composed of all the tags in the queue at their current state. This will require cycling through the elements in the Queue.



  • HTMLTag has a toString() that can be used when adding each tag's string representation to the string to be returned


  • The HTMLTag's toString() leaves some spaces in the tags, which can upset my HTMLChecker. To prevent this, use .trim() on the HTMLTag's toString() result to remove any extra spaces.

  • Be careful not the change the state of the Queue during this process (i.e. you will need to remove to cycle through the tags, but don't forget to readd them!)



void fixHTML()


[visual walk through of the algorithm


Actions]



This method will try to fix the page’s HTML if there are any missing or extra tags. The algorithm that you will use is a simplified version of what Chrome, Firefox, and other browsers do when they try to display a broken webpage. This method should build up a correct version of the HTMLTags being managed, and update the instance queue to store the corrected version of the HTML.



To fix the HTML you will analyze the tags stored in the HTMLManager using a Stack.This stack only needs to exist in this method, not as a field in the class.


The basic idea of the algorithm is to process the page tag by tag. For each tag, you will check to see if it has a matching tag later in the page in the correct place.



  • Since self-closing tags don’t have to match anything, whenever you see one, you can simply add it directly back to the queue.

  • For opening tags, whenever you see one, you can simply add it directly back to the queue. However, you also need to keep track of if you have found it’s closing tag; so, the opening tag should also be added to a Stack.

  • If you find a closing tag, you must determine if it is in the right place or not. In particular:

    • If the tag on the top of the stackmatchesthe tag you are currently looking at, then you should add the closing tag back to the queue and remove the opening tag from the stack.(Hint: look at the difference between the equals() and the matches() method in HTMLTag)







    • If thetag on the top of thestackdoes not matchthe closing tag you found, then the writer of the HTML page made a mistake. To fix the mistake, you should add a new closing tag thatmatchesthe opening one at the top of the stack. (Hint: use the getMatching() method)





    • If you find a closing tag that has no matching open tag / the stack is empty, just discard it.



  • At the end of processing all the tags, if you have any left over tags that were never closed (these would be left in the stack), you should close them.



Part 3: Test your HTMLManager using HTMLChecker


Run the HTMLChecker and see if your code passes all the test cases. If it does not - mine didn't on the first few tries ;-), I recommend using the debugger to



  • set a breakpoint on the loop inside your HTMLManager's fixHTML()

  • pull out your stack and queue variables from the debug panel

  • step through your code over and over until you figure out when things go wrong


Here is an example of what your final output will look like:


=============================== Processing tests/test1.html... =============================== HTML:







Checking HTML for errors...
HTML after fix:






----> Result matches Expected Output! =============================== Processing tests/test2.html... =============================== HTML: Checking HTML for errors...
HTML after fix: ----> Result matches Expected Output! =============================== All tests passed! ===============================

What to Submit



  • Your completed HTMLManager.java

  • Please include at the end of this file your final output from HTMLChecker.java


Submission Requirements


You should do the following for _all_ assignments submitted for this course.


ProgramComment


Include a comment at the beginning of your program with the followinginformation and a description of the program in your own words:



// Your name here // CS 143 // HW Core Topics: ... // // This program will ...



Program Output


Include the output from a single run of your program as a block comment at the end ofthe program. This comment should come one blank line after the last closing curly brace in your code.


}
/* Paste the output from JGrasp here. Altering output will earn you an automatic zero for the assignment. */

Rubric

HTML Checker RubricHTML Checker Rubric



































































CriteriaRatingsPts
This criterion is linked to a Learning Outcomeconstructor: handles null parameter







1.0ptsFull Marks0.0ptsNo Marks

1.0pts

This criterion is linked to a Learning Outcomeconstructor: "remembers" tags that are passed in







1.0ptsFull Marks0.0ptsNo Marks

1.0pts

This criterion is linked to a Learning OutcomegetTags(): returns tags in the queue







1.0ptsFull Marks0.0ptsNo Marks

1.0pts

This criterion is linked to a Learning OutcometoString()returns a string representation of the tags in the queue; cycles through queue tags; doesn't change the state of the queue from it's original state; uses trim() to make sure that HTMLChecker will work








4.0to >3.0ptsFull Marks3.0to >0.0ptsSome bugs0.0ptsNo Marks

4.0pts

This criterion is linked to a Learning OutcomefixHTML(): properly scopes Stack to this method only







1.0ptsFull Marks0.0ptsNo Marks

1.0pts

This criterion is linked to a Learning OutcomefixHTML(): cycles through all the tags without causing an infinite loop







1.0ptsFull Marks0.0ptsNo Marks

1.0pts

This criterion is linked to a Learning OutcomefixHTML(): handles self-closing tags properly







2.0ptsFull Marks0.0ptsNo Marks

2.0pts

This criterion is linked to a Learning OutcomefixHTML(): handles opening tags properly







2.0ptsFull Marks0.0ptsNo Marks

2.0pts

This criterion is linked to a Learning OutcomefixHTML(): handles closing tags properly








5.0to >4.0ptsFull Marks4.0to >0.0ptsSome bugs0.0ptsNo Marks

5.0pts

This criterion is linked to a Learning OutcomefixHTML(): handles tags leftover in the stack properly







2.0ptsFull Marks0.0ptsNo Marks

2.0pts

This criterion is linked to a Learning Outcomestyle / submission requirementsvariable names, indentation, formatting, etc; comments as needed (particularly in the fixHTML() method); header and output provided;








5.0to >4.0ptsFull Marks4.0to >0.0ptsNeeds improvement0.0ptsNo Marks

5.0pts

Total Points:25.0


HW #3: Sudoku #3 (solve)" aria-describedby="msf0-previous-desc" style="color: rgb(45, 59, 69); background: rgb(245, 245, 245); border: 1px solid rgb(199, 205, 209); border-radius: 3px; transition: background-color 0.2s ease-in-out 0s; display: inline-block; position: relative; padding: 8px 14px; margin-bottom: 0px; font-size: 1rem; line-height: 20px; text-align: center; vertical-align: middle; cursor: pointer; overflow: hidden; text-shadow: none; user-select: none; float: left;">Previous

HW #5: Josephus Problem" style="float: right;">Next

Answered Same DayMar 01, 2021

Answer To: Overview In this assignment, we will be creating an HTML Checker program that will check the syntax...

Abhishek answered on Mar 04 2021
149 Votes
51440 - HTML Checker/JGrasp_Out.txt

----jGRASP exec: java HTMLChecker
---- at: 4 Mar, 2020 5:53:32 PM

----jGRASP: CLASSPATH is ":.:::/home/abhishek/Desktop/jgrasp/extensions/classes".
----jGRASP: PATH is "".
----jGRASP: working directory is [/home/abhishek/Downloads/51440 - HTML Checker/Solution/Simple Code Files].
----jGRASP: actual command sent ["/usr/lib/jvm/java-8-oracle/bin/java" "HTMLChecker"].

===============================
Processing tests/test2.html...
===============================
HTML:
Checking HTML for errors...
HTML after fix:
----> Result matches Expected Output!

===============================
Processing tests/test1.html...
===============================
HTML:

Checking HTML for errors...
HTML after fix:

----> Result matches Expected Output!

===============================
Processing tests/test3.html...
===============================
HTML:


Checking HTML for errors...
HTML after fix:

----> Result matches Expected Output!

===============================
Processing tests/test5.html...
===============================
HTML:





Checking HTML for errors...
HTML after fix:





----> Result matches Expected Output!

===============================
Processing tests/test4.html...
===============================
HTML:

Checking HTML for errors...
HTML after fix:

----> Result matches Expected Output!

==============
=================
All tests passed!
===============================
----jGRASP: operation complete.

51440 - HTML Checker/Screenshots/O4.png
51440 - HTML Checker/Screenshots/O3.png
51440 - HTML Checker/Screenshots/O1.png
51440 - HTML Checker/Screenshots/O2.png
51440 - HTML Checker/Problem/Problem.txt
Overview
In this assignment, we will be creating an HTML Checker program that will check the syntax of HTML tags. It is similar, but different,from theSyntax Checkerwhich checked matching opening and closing symbol placement.
You will write a class that stores the contents of an HTML page as a queue of HTMLTags. Your class will also be able to fix invalid HTML tags. Your HTMLManager will use stacks and queues to figure out whether the tags match and fix the mistakes it finds.
There will also be a number of Instructor-provided files to help with this assignment in order to make your work a little less :-)
Topics
queues, stacks
Background on HTML
Web pages are written in a language called “Hypertext Markup Language”, or HTML. An HTML file consists of text surrounded by markings called tags. Tags give information to the text, such as formatting (bold, italic, etc) or layout (paragraph, table, list, etc). Some tags specify comments or information about the document (header, title, document type).
A tag consists of a named element betweenless-thanandgreater-than> symbols.For example, the tag for making text bold uses the elementband is written as .
Many tags apply to a range of text, in which case a pair of tags is used:
An opening tag (indicating the start of the range), which is written as: A closing tag (indicating the end of the range), which is written as:
So to make some text bold on a page, one would surround the text with opening and closingbtags:
HTML Code: like thisDisplayed on screen:like this
Tags can be nested to combine effects. For example:
HTML Code: like thisDisplayed on screen:like this
Some tags, such as the br tag (which inserts a line break) or the img (which inserts an image), do not cover a range of text and are considered to be “self-closing.” Self-closing tags do not need a closing tag; for a line break, only
is needed. Some web developers write self-closing tags with an optional / before the >, such as
.
Checking HTML
One problem on the web is that many developers make mistakes in their HTML code. All tags that cover a range must eventually be closed, but some developers forget to close their tags. Also, whenever a tag is nested inside another tag, like this, the inner tag (ifor italic, here) must be closed before the outer tag is closed. So the following tags are not valid HTML, because the should appear first: this is invalid
This might sound like a lot if you are unfamiliar with HTML, butDon't stress!You will be provided with an algorithm for checking the validity of a series of HTML tags using stacks and queues.You will just need to follow the algorithm.
Instructions
Part 1: Get the starter files
For this assignment, you are provided with a number of starter files:HTMLChecker.zip
The only file that you willeditis HTMLManager.javaThe only file that you willrunis HTMLChecker.javaThetests/ foldercontains a few test HTML filesTheexpected_output/ foldercontains the expected "fixed" HTML for the associated test files - these are called and compared in the HTMLChecker.java fileThe other files you willmostlyjust ignore as they are used from the HTMLChecker, except for HTMLTag.
HTMLTag
There is a provided file called HTMLTag which is the base type for your Queue (and the Stack that you will create in fixHTML), so it is fundamental that you know what methods it contains, though you will not edit it.
An HTMLTag object corresponds to an HTML tag such as
or . An HTMLTag can either be an opening tag, a closing tag, or a self-closing tag. You don’t need to construct HTMLTag objects in your code, but you will process them. The reason we use HTMLTag objects instead of just storing the tags as strings is that the class provides extra functionality that makes processing HTMLTags easier.
In particular, it provides the following methods:
boolean isOpening()
    
Returns true ifthisHTML tag is an “opening” (starting) tag.
boolean isClosing()
    
Returns true ifthisHTML tag is an “closing” (closing) tag.
boolean isSelfClosing()
    
Returns true ifthisHTML tag is an “self-closing” tag.
boolean matches(other)
    
Returns true if the givenothertag matches (has the same tag type as)thistag; e.g., and .
HTMLTag getMatching()
    
Returnsa new tagthat matchesthistag but has opposite type (e.g. ifthis is , then this method will return and vice versa)
boolean equals(other)
    
Returns true if the givenothertag equalsthistag. Theothertag is equal if the internal element is the same asthistag’s element and has the sameopening or closing state; e.g. and .
String toString()
    
Returns a string representation ofthisHTML tag, such as “”.
Part 2: build HTMLManager
You need to follow the specification and algorithm below in order to make HTMLChecker work correctly. Additionally,here is a visual walk through of the fixHTML algorithm
.
Method
Method
    
Description
HTMLManager(Queue html)
    
The constructor takes in a Queue of HTMLTags that make up an HTML page.
If the queue passed is null, the constructor throws an IllegalArgumentException.; otherwise the HTMLManager should "remember" the passed information by storing it in its Queue field.
An empty queue (size 0) is allowed.
Queue getTags()
    
Returns thequeue of HTMLTags being managed.
String toString()
    
Returns a constructed String composed of all the tags in the queue at their current state. This will require cycling through the elements in the Queue.
HTMLTag has a toString() that can be used when adding each tag's string representation to the string to be returnedThe HTMLTag's toString() leaves some spaces in the tags, which can upset my HTMLChecker. To prevent this, use .trim() on the HTMLTag's toString() result to remove any extra spaces.Be careful not the change the state of the Queue during this process (i.e. you will need to remove to cycle through the tags, but don't forget to readd them!)
void fixHTML()
[visual walk through of the algorithm
]
    
This method will try to fix the page’s HTML if there are any missing or extra tags. The algorithm that you will use is a simplified version of what Chrome, Firefox, and other browsers do when they try to display a broken webpage. This method should build up a correct version of the HTMLTags being managed, and update the instance queue to store the corrected version of the HTML.
To fix the HTML you will analyze the tags stored in the HTMLManager using a Stack.This stack only needs to exist in this method, not as a field in the class.
The basic idea of the algorithm is to process the page tag by tag. For each tag, you will check to see if it has a matching tag later in the page in the correct place.
Since self-closing tags don’t have to match anything, whenever you see one, you can simply add it directly back to the queue.For opening tags, whenever you see one, you can simply add it directly back to the queue. However, you also need to keep track of if you have found it’s closing tag; so, the opening tag should also be added to a Stack.If you find a closing tag, you must determine if it is in the right place or not. In particular:
If the tag on the top of the stackmatchesthe tag you are currently looking at, then you should add the closing tag back to the queue and remove the opening tag from the stack.(Hint: look at the difference between the equals() and the matches() method in HTMLTag)
If thetag on the top of thestackdoes not matchthe closing tag you found, then the writer of the HTML page made a mistake. To fix the mistake, you should add a new closing tag thatmatchesthe opening one at the top of the stack. (Hint: use the getMatching() method)
If you find a closing tag that has no matching open tag / the stack is empty, just discard it.At the end of processing all the tags, if you have any left over tags that were never closed (these would be left in the stack), you should close them.
Part 3: Test your HTMLManager using HTMLChecker
Run the HTMLChecker and see if your code passes all the test cases. If it does not - mine didn't on the first few tries ;-), I recommend using the debugger to
set a breakpoint on the loop inside your HTMLManager's fixHTML()pull out your stack and queue variables from the debug panelstep through your code over and over until you figure out when things go wrong
Here is an example of what your final output will look like:
=============================== Processing tests/test1.html... =============================== HTML:
Checking HTML for errors...
HTML after fix:
----> Result matches Expected Output! =============================== Processing tests/test2.html... =============================== HTML: Checking HTML for errors...
HTML after fix: ----> Result matches Expected Output! =============================== All tests passed! ===============================
What to Submit
Your completed HTMLManager.javaPlease include at the end of this file your final output from HTMLChecker.java
Submission Requirements
You should do the following for _all_ assignments submitted for this course.
ProgramComment
Include a comment at the beginning of your program with the followinginformation and a description of the program in your own words:
// Your name here // CS 143 // HW Core Topics: ... // // This program will ...
Program Output
Include the output from a single run of your program as a block comment at the end ofthe program. This comment should come one blank line after the last closing curly brace in your code.
}
/* Paste the output from JGrasp here. Altering output will earn you an automatic zero for the assignment. */
Rubric
HTML Checker RubricHTML Checker Rubric
Criteria    Ratings    Pts
This criterion is linked to a Learning Outcomeconstructor: handles null parameter    
1.0ptsFull Marks    0.0ptsNo Marks
    1.0pts
This criterion is linked to a Learning Outcomeconstructor: "remembers" tags that are passed in    
1.0ptsFull Marks    0.0ptsNo Marks
    1.0pts
This criterion is linked to a Learning OutcomegetTags(): returns tags in the queue    
1.0ptsFull Marks    0.0ptsNo Marks
    1.0pts
This criterion is linked to a Learning OutcometoString()returns a string representation of the tags in the queue; cycles through queue tags; doesn't change the state of the queue from it's original state; uses trim() to make sure that HTMLChecker will work    
4.0to >3.0ptsFull Marks    3.0to >0.0ptsSome bugs    0.0ptsNo Marks
    4.0pts
This criterion is linked to a Learning OutcomefixHTML(): properly scopes Stack to this method only    
1.0ptsFull Marks    0.0ptsNo Marks
    1.0pts
This criterion is linked to a Learning OutcomefixHTML(): cycles through all the tags without causing an infinite loop    
1.0ptsFull Marks    0.0ptsNo Marks
    1.0pts
This criterion is linked to a Learning OutcomefixHTML(): handles self-closing tags properly    
2.0ptsFull Marks    0.0ptsNo Marks
    2.0pts
This criterion is linked to a Learning OutcomefixHTML(): handles opening tags properly    
2.0ptsFull Marks    0.0ptsNo Marks
    2.0pts
This criterion is linked to a Learning OutcomefixHTML(): handles closing tags properly    
5.0to >4.0ptsFull Marks    4.0to >0.0ptsSome bugs    0.0ptsNo Marks
    5.0pts
This criterion is linked to a Learning OutcomefixHTML(): handles tags leftover in the stack properly    
2.0ptsFull Marks    0.0ptsNo Marks
    2.0pts
This criterion is linked to a Learning Outcomestyle / submission requirementsvariable names, indentation, formatting, etc; comments as needed (particularly in the fixHTML() method); header and output provided;    
5.0to >4.0ptsFull Marks    4.0to >0.0ptsNeeds improvement    0.0ptsNo Marks
    5.0pts
Total Points:25.0
51440 - HTML Checker/Solution/Simple Code Files/JGrasp_Out.txt

----jGRASP exec: java HTMLChecker
---- at: 4 Mar, 2020 5:53:32 PM

----jGRASP: CLASSPATH is ":.:::/home/abhishek/Desktop/jgrasp/extensions/classes".
----jGRASP: PATH is "".
----jGRASP: working directory is [/home/abhishek/Downloads/51440 - HTML Checker/Solution/Simple Code Files].
----jGRASP: actual command sent ["/usr/lib/jvm/java-8-oracle/bin/java" "HTMLChecker"].

===============================
Processing tests/test2.html...
===============================
HTML:
Checking HTML for errors...
HTML after fix:
----> Result matches Expected Output!

===============================
Processing tests/test1.html...
===============================
HTML:

Checking HTML for errors...
HTML after fix:

----> Result matches Expected Output!

===============================
Processing tests/test3.html...
===============================
HTML:


Checking HTML for errors...
HTML after fix:

----> Result matches Expected Output!

===============================
Processing tests/test5.html...
===============================
HTML:





Checking HTML for errors...
HTML after fix:





----> Result matches Expected Output!

===============================
Processing tests/test4.html...
===============================
HTML:

Checking HTML for errors...
HTML after fix:

----> Result matches Expected Output!

===============================
All tests passed!
===============================
----jGRASP: operation complete.

51440 - HTML Checker/Solution/Simple Code Files/HTMLTagType.class
public final synchronized enum HTMLTagType {
public static final HTMLTagType SELF_CLOSING;
public static final HTMLTagType OPENING;
public static final HTMLTagType CLOSING;
public static HTMLTagType[] values();
public static HTMLTagType valueOf(String);
private void HTMLTagType(String, int);
static void ();
}
51440 - HTML Checker/Solution/Simple Code Files/HTMLTag.class
public synchronized class HTMLTag {
private static final java.util.Set SELF_CLOSING_TAGS;
private final String element;
private final String attributes;
private final String contents;
private final HTMLTagType type;
public static final String INDENT_STRING = ;
public void HTMLTag(String, HTMLTagType, String);
public void HTMLTag(String, HTMLTagType);
public boolean isOpening();
public boolean isClosing();
public boolean isSelfClosing();
public boolean isComment();
public boolean matches(HTMLTag);
public boolean equals(HTMLTag);
public HTMLTag getMatching();
public String toString();
public String toString(int);
static void ();
}
51440 - HTML Checker/Solution/Simple Code Files/HTMLManager.class
public synchronized class HTMLManager {
private java.util.Queue tags;
public void HTMLManager(java.util.Queue);
public java.util.Queue getTags();
public void fixHTML();
public String toString();
}
51440 - HTML Checker/Solution/Simple Code Files/HTMLParser.class
public synchronized class HTMLParser {
public String unparsedPage;
private void parseStream(String, java.io.InputStream);
public void HTMLParser(java.net.URL);
public void HTMLParser(java.io.File);
public void HTMLParser(String);
public java.util.Queue parse();
}
51440 - HTML Checker/Solution/Simple Code Files/HTMLParser$HTMLLexer.class
synchronized class HTMLParser$HTMLLexer implements java.util.Iterator {
private String page;
private int index;
private boolean inString;
private char quoteType;
public void HTMLParser$HTMLLexer(HTMLParser,...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here