Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Unified Diff: pkg/analyzer_experimental/lib/src/generated/html.dart

Issue 16337007: Version 0.5.13.1 . (Closed) Base URL: http://dart.googlecode.com/svn/trunk/dart/
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer_experimental/lib/src/generated/html.dart
===================================================================
--- pkg/analyzer_experimental/lib/src/generated/html.dart (revision 23549)
+++ pkg/analyzer_experimental/lib/src/generated/html.dart (working copy)
@@ -11,43 +11,51 @@
import 'instrumentation.dart';
import 'element.dart' show HtmlElementImpl;
+
/**
* Instances of the class {@code Token} represent a token that was scanned from the input. Each
* token knows which token follows it, acting as the head of a linked list of tokens.
* @coverage dart.engine.html
*/
class Token {
+
/**
* The offset from the beginning of the file to the first character in the token.
*/
int _offset = 0;
+
/**
* The previous token in the token stream.
*/
Token _previous;
+
/**
* The next token in the token stream.
*/
Token _next;
+
/**
* The type of the token.
*/
TokenType _type;
+
/**
* The lexeme represented by this token.
*/
String _value;
+
/**
* Initialize a newly created token.
* @param type the token type (not {@code null})
* @param offset the offset from the beginning of the file to the first character in the token
*/
Token.con1(TokenType type, int offset) {
- _jtd_constructor_151_impl(type, offset);
+ _jtd_constructor_154_impl(type, offset);
}
- _jtd_constructor_151_impl(TokenType type, int offset) {
- _jtd_constructor_152_impl(type, offset, type.lexeme);
+ _jtd_constructor_154_impl(TokenType type, int offset) {
+ _jtd_constructor_155_impl(type, offset, type.lexeme);
}
+
/**
* Initialize a newly created token.
* @param type the token type (not {@code null})
@@ -55,13 +63,14 @@
* @param value the lexeme represented by this token (not {@code null})
*/
Token.con2(TokenType type2, int offset2, String value2) {
- _jtd_constructor_152_impl(type2, offset2, value2);
+ _jtd_constructor_155_impl(type2, offset2, value2);
}
- _jtd_constructor_152_impl(TokenType type2, int offset2, String value2) {
+ _jtd_constructor_155_impl(TokenType type2, int offset2, String value2) {
this._type = type2;
this._value = StringUtilities.intern(value2);
this._offset = offset2;
}
+
/**
* Return the offset from the beginning of the file to the character after last character of the
* token.
@@ -69,36 +78,43 @@
* of the token
*/
int get end => _offset + length;
+
/**
* Return the number of characters in the node's source range.
* @return the number of characters in the node's source range
*/
int get length => lexeme.length;
+
/**
* Return the lexeme that represents this token.
* @return the lexeme (not {@code null})
*/
String get lexeme => _value;
+
/**
* Return the next token in the token stream.
* @return the next token in the token stream
*/
Token get next => _next;
+
/**
* Return the offset from the beginning of the file to the first character in the token.
* @return the offset from the beginning of the file to the first character in the token
*/
int get offset => _offset;
+
/**
* Return the previous token in the token stream.
* @return the previous token in the token stream
*/
Token get previous => _previous;
+
/**
* Answer the token type for the receiver.
* @return the token type (not {@code null})
*/
TokenType get type => _type;
+
/**
* Return {@code true} if this token is a synthetic token. A synthetic token is a token that was
* introduced by the parser in order to recover from an error in the code. Synthetic tokens always
@@ -106,6 +122,7 @@
* @return {@code true} if this token is a synthetic token
*/
bool isSynthetic() => length == 0;
+
/**
* Set the next token in the token stream to the given token. This has the side-effect of setting
* this token to be the previous token for the given token.
@@ -118,6 +135,7 @@
return token;
}
String toString() => lexeme;
+
/**
* Set the previous token in the token stream to the given token.
* @param previous the previous token in the token stream
@@ -126,11 +144,13 @@
this._previous = previous2;
}
}
+
/**
* Instances of {@code HtmlParseResult} hold the result of parsing an HTML file.
* @coverage dart.engine.html
*/
class HtmlParseResult extends HtmlScanResult {
+
/**
* The unit containing the parsed information (not {@code null}).
*/
@@ -138,12 +158,14 @@
HtmlParseResult(int modificationTime, Token token, List<int> lineStarts, HtmlUnit unit) : super(modificationTime, token, lineStarts) {
this._unit = unit;
}
+
/**
* Answer the unit generated by parsing the source
* @return the unit (not {@code null})
*/
HtmlUnit get htmlUnit => _unit;
}
+
/**
* Instances of the class {@code RecursiveXmlVisitor} implement an XML visitor that will recursively
* visit all of the nodes in an XML structure. For example, using an instance of this class to visit
@@ -168,26 +190,31 @@
return null;
}
}
+
/**
* The abstract class {@code XmlNode} defines behavior common to all XML/HTML nodes.
* @coverage dart.engine.html
*/
abstract class XmlNode {
+
/**
* The parent of the node, or {@code null} if the node is the root of an AST structure.
*/
XmlNode _parent;
+
/**
* Use the given visitor to visit this node.
* @param visitor the visitor that will visit this node
* @return the value returned by the visitor as a result of visiting this node
*/
accept(XmlVisitor visitor);
+
/**
* Return the first token included in this node's source range.
* @return the first token or {@code null} if none
*/
Token get beginToken;
+
/**
* Return the offset of the character immediately following the last character of this node's
* source range. This is equivalent to {@code node.getOffset() + node.getLength()}. For an html
@@ -195,11 +222,13 @@
* @return the offset of the character just past the node's source range
*/
int get end => offset + length;
+
/**
* Return the last token included in this node's source range.
* @return the last token or {@code null} if none
*/
Token get endToken;
+
/**
* Return the number of characters in the node's source range.
* @return the number of characters in the node's source range
@@ -212,6 +241,7 @@
}
return endToken2.offset + endToken2.length - beginToken2.offset;
}
+
/**
* Return the offset from the beginning of the file to the first character in the node's source
* range.
@@ -225,6 +255,7 @@
}
return beginToken.offset;
}
+
/**
* Return this node's parent node, or {@code null} if this node is the root of an AST structure.
* <p>
@@ -238,12 +269,14 @@
accept(new ToSourceVisitor(writer));
return writer.toString();
}
+
/**
* Use the given visitor to visit all of the children of this node. The children will be visited
* in source order.
* @param visitor the visitor that will be used to visit the children of this node
*/
void visitChildren(XmlVisitor<Object> visitor);
+
/**
* Make this node the parent of the given child nodes.
* @param children the nodes that will become the children of this node
@@ -259,6 +292,7 @@
}
return children;
}
+
/**
* Make this node the parent of the given child node.
* @param child the node that will become a child of this node
@@ -271,6 +305,7 @@
}
return child;
}
+
/**
* Set the parent of this node to the given node.
* @param newParent the node that is to be made the parent of this node
@@ -279,6 +314,7 @@
_parent = newParent;
}
}
+
/**
* Instances of the class {@code SimpleXmlVisitor} implement an AST visitor that will do nothing
* when visiting an AST node. It is intended to be a superclass for classes that use the visitor
@@ -290,6 +326,7 @@
R visitXmlAttributeNode(XmlAttributeNode xmlAttributeNode) => null;
R visitXmlTagNode(XmlTagNode xmlTagNode) => null;
}
+
/**
* The abstract class {@code AbstractScanner} implements a scanner for HTML code. Subclasses are
* required to implement the interface used to access the characters being scanned.
@@ -297,26 +334,32 @@
*/
abstract class AbstractScanner {
static List<String> _NO_PASS_THROUGH_ELEMENTS = <String> [];
+
/**
* The source being scanned.
*/
Source _source;
+
/**
* The token pointing to the head of the linked list of tokens.
*/
Token _tokens;
+
/**
* The last token that was scanned.
*/
Token _tail;
+
/**
* A list containing the offsets of the first character of each line in the source code.
*/
List<int> _lineStarts = new List<int>();
+
/**
* An array of element tags for which the content between tags should be consider a single token.
*/
List<String> _passThroughElements = _NO_PASS_THROUGH_ELEMENTS;
+
/**
* Initialize a newly created scanner.
* @param source the source being scanned
@@ -328,11 +371,13 @@
_tail = _tokens;
recordStartOfLine();
}
+
/**
* Return an array containing the offsets of the first character of each line in the source code.
* @return an array containing the offsets of the first character of each line in the source code
*/
List<int> get lineStarts => _lineStarts;
+
/**
* Return the current offset relative to the beginning of the file. Return the initial offset if
* the scanner has not yet scanned the source code, and one (1) past the end of the source code if
@@ -340,17 +385,20 @@
* @return the current offset of the scanner in the source
*/
int get offset;
+
/**
* Answer the source being scanned.
* @return the source or {@code null} if undefined
*/
Source get source => _source;
+
/**
* Set array of element tags for which the content between tags should be consider a single token.
*/
void set passThroughElements(List<String> passThroughElements2) {
this._passThroughElements = passThroughElements2 != null ? passThroughElements2 : _NO_PASS_THROUGH_ELEMENTS;
}
+
/**
* Scan the source code to produce a list of tokens representing the source.
* @return the first token in the list of tokens that were produced
@@ -360,11 +408,13 @@
appendEofToken();
return firstToken();
}
+
/**
* Advance the current position and return the character at the new current position.
* @return the character at the new current position
*/
int advance();
+
/**
* Return the substring of the source code between the start offset and the modified current
* position. The current position is modified by adding the end delta.
@@ -375,11 +425,13 @@
* @return the specified substring of the source code
*/
String getString(int start, int endDelta);
+
/**
* Return the character at the current position without changing the current position.
* @return the character at the current position
*/
int peek();
+
/**
* Record the fact that we are at the beginning of a new line in the source.
*/
@@ -549,19 +601,23 @@
}
}
}
+
/**
* Instances of {@code HtmlScanResult} hold the result of scanning an HTML file.
* @coverage dart.engine.html
*/
class HtmlScanResult {
+
/**
* The time at which the contents of the source were last set.
*/
int _modificationTime = 0;
+
/**
* The first token in the token stream (not {@code null}).
*/
Token _token;
+
/**
* The line start information that was produced.
*/
@@ -571,40 +627,48 @@
this._token = token;
this._lineStarts = lineStarts;
}
+
/**
* Answer the line start information that was produced.
* @return an array of line starts (not {@code null})
*/
List<int> get lineStarts => _lineStarts;
+
/**
* Return the time at which the contents of the source were last set.
* @return the time at which the contents of the source were last set
*/
int get modificationTime => _modificationTime;
+
/**
* Answer the first token in the token stream.
* @return the token (not {@code null})
*/
Token get token => _token;
}
+
/**
* Instances of the class {@code StringScanner} implement a scanner that reads from a string. The
* scanning logic is in the superclass.
* @coverage dart.engine.html
*/
class StringScanner extends AbstractScanner {
+
/**
* The string from which characters will be read.
*/
String _string;
+
/**
* The number of characters in the string.
*/
int _stringLength = 0;
+
/**
* The index, relative to the string, of the last character that was read.
*/
int _charOffset = 0;
+
/**
* Initialize a newly created scanner to scan the characters in the given string.
* @param source the source being scanned
@@ -634,24 +698,29 @@
return -1;
}
}
+
/**
* Instances of the class {@code CharBufferScanner} implement a scanner that reads from a character
* buffer. The scanning logic is in the superclass.
* @coverage dart.engine.html
*/
class CharBufferScanner extends AbstractScanner {
+
/**
* The buffer from which characters will be read.
*/
CharSequence _buffer;
+
/**
* The number of characters in the buffer.
*/
int _bufferLength = 0;
+
/**
* The index of the last character that was read.
*/
int _charOffset = 0;
+
/**
* Initialize a newly created scanner to scan the characters in the given character buffer.
* @param source the source being scanned
@@ -678,16 +747,19 @@
return -1;
}
}
+
/**
* Instances of the class {@code ToSourceVisitor} write a source representation of a visited XML
* node (and all of it's children) to a writer.
* @coverage dart.engine.html
*/
class ToSourceVisitor implements XmlVisitor<Object> {
+
/**
* The writer to which the source is to be written.
*/
PrintWriter _writer;
+
/**
* Initialize a newly created visitor to write source code representing the visited nodes to the
* given writer.
@@ -737,6 +809,7 @@
}
return null;
}
+
/**
* Safely visit the given node.
* @param node the node to be visited
@@ -747,12 +820,14 @@
}
}
}
+
/**
* The enumeration {@code TokenType} defines the types of tokens that can be returned by the
* scanner.
* @coverage dart.engine.html
*/
class TokenType implements Comparable<TokenType> {
+
/**
* The type of the token that marks the end of the input.
*/
@@ -769,30 +844,36 @@
static final TokenType TAG = new TokenType('TAG', 10, null);
static final TokenType TEXT = new TokenType('TEXT', 11, null);
static final List<TokenType> values = [EOF, EQ, GT, LT_SLASH, LT, SLASH_GT, COMMENT, DECLARATION, DIRECTIVE, STRING, TAG, TEXT];
- final String __name;
- final int __ordinal;
- int get ordinal => __ordinal;
+
+ /// The name of this enum constant, as declared in the enum declaration.
+ final String name;
+
+ /// The position in the enum declaration.
+ final int ordinal;
+
/**
* The lexeme that defines this type of token, or {@code null} if there is more than one possible
* lexeme for this type of token.
*/
String _lexeme;
- TokenType(this.__name, this.__ordinal, String lexeme) {
+ TokenType(this.name, this.ordinal, String lexeme) {
this._lexeme = lexeme;
}
+
/**
* Return the lexeme that defines this type of token, or {@code null} if there is more than one
* possible lexeme for this type of token.
* @return the lexeme that defines this type of token
*/
String get lexeme => _lexeme;
- int compareTo(TokenType other) => __ordinal - other.__ordinal;
- String toString() => __name;
+ int compareTo(TokenType other) => ordinal - other.ordinal;
+ String toString() => name;
}
class TokenType_EOF extends TokenType {
- TokenType_EOF(String ___name, int ___ordinal, String arg0) : super(___name, ___ordinal, arg0);
+ TokenType_EOF(String name, int ordinal, String arg0) : super(name, ordinal, arg0);
String toString() => "-eof-";
}
+
/**
* Instances of {@code XmlAttributeNode} represent name/value pairs owned by an {@link XmlTagNode}.
* @coverage dart.engine.html
@@ -801,6 +882,7 @@
Token _name;
Token _equals;
Token _value;
+
/**
* Construct a new instance representing an XML attribute.
* @param name the name token (not {@code null}). This may be a zero length token if the attribute
@@ -816,16 +898,19 @@
accept(XmlVisitor visitor) => visitor.visitXmlAttributeNode(this);
Token get beginToken => _name;
Token get endToken => _value;
+
/**
* Answer the equals sign token that appears between the name and value tokens. This may be{@code null} if the attribute is badly formed.
* @return the token or {@code null} if there is no equals sign between the name and value
*/
Token get equals => _equals;
+
/**
* Answer the attribute name. This may be a zero length token if the attribute is badly formed.
* @return the name (not {@code null})
*/
Token get name => _name;
+
/**
* Answer the lexeme for the value token without the leading and trailing quotes.
* @return the text or {@code null} if the value is not specified
@@ -853,6 +938,7 @@
}
return text;
}
+
/**
* Answer the attribute value. A properly formed value will start and end with matching quote
* characters, but the value returned may not be properly formed.
@@ -862,6 +948,7 @@
void visitChildren(XmlVisitor<Object> visitor) {
}
}
+
/**
* The interface {@code XmlVisitor} defines the behavior of objects that can be used to visit an{@link XmlNode} structure.
* @coverage dart.engine.html
@@ -871,6 +958,7 @@
R visitXmlAttributeNode(XmlAttributeNode xmlAttributeNode);
R visitXmlTagNode(XmlTagNode xmlTagNode);
}
+
/**
* Instances of {@code HtmlScanner} receive and scan HTML content from a {@link Source}.<br/>
* For example, the following code scans HTML source and returns the result:
@@ -883,22 +971,27 @@
*/
class HtmlScanner implements Source_ContentReceiver {
List<String> _SCRIPT_TAG = <String> ["script"];
+
/**
* The source being scanned (not {@code null})
*/
Source _source;
+
/**
* The time at which the contents of the source were last set.
*/
int _modificationTime = 0;
+
/**
* The scanner used to scan the source
*/
AbstractScanner _scanner;
+
/**
* The first token in the token stream.
*/
Token _token;
+
/**
* Construct a new instance to scan the specified source.
* @param source the source to be scanned (not {@code null})
@@ -918,26 +1011,31 @@
_scanner.passThroughElements = _SCRIPT_TAG;
_token = _scanner.tokenize();
}
+
/**
* Answer the result of scanning the source
* @return the result (not {@code null})
*/
HtmlScanResult get result => new HtmlScanResult(_modificationTime, _token, _scanner.lineStarts);
}
+
/**
* Instances of the class {@code XmlParser} are used to parse tokens into a AST structure comprised
* of {@link XmlNode}s.
* @coverage dart.engine.html
*/
class XmlParser {
+
/**
* The source being parsed.
*/
Source _source;
+
/**
* The next token to be parsed.
*/
Token _currentToken;
+
/**
* Construct a parser for the specified source.
* @param source the source being parsed
@@ -945,11 +1043,13 @@
XmlParser(Source source) {
this._source = source;
}
+
/**
* Answer the source being parsed.
* @return the source
*/
Source get source => _source;
+
/**
* Answer {@code true} if the specified tag is self closing and thus should never have content or
* child tag nodes.
@@ -957,6 +1057,7 @@
* @return {@code true} if self closing
*/
bool isSelfClosing(Token tag) => false;
+
/**
* Parse the entire token stream and in the process, advance the current token to the end of the
* token stream.
@@ -981,11 +1082,13 @@
}
}
}
+
/**
* Answer the current token.
* @return the current token
*/
Token get currentToken => _currentToken;
+
/**
* Insert a synthetic token of the specified type before the current token
* @param type the type of token to be inserted (not {@code null})
@@ -997,6 +1100,7 @@
token.setNext(_currentToken);
return token;
}
+
/**
* Parse the token stream for an attribute. This method advances the current token over the
* attribute, but should not be called if the {@link #currentToken} is not {@link TokenType#TAG}.
@@ -1023,6 +1127,7 @@
}
return new XmlAttributeNode(name, equals, value);
}
+
/**
* Parse the stream for a sequence of attributes. This method advances the current token to the
* next {@link TokenType#GT}, {@link TokenType#SLASH_GT}, or {@link TokenType#EOF}.
@@ -1048,6 +1153,7 @@
}
}
}
+
/**
* Parse the stream for a sequence of tag nodes existing within a parent tag node. This method
* advances the current token to the next {@link TokenType#LT_SLASH} or {@link TokenType#EOF}.
@@ -1075,6 +1181,7 @@
}
}
}
+
/**
* Parse the token stream for the next tag node. This method advances current token over the
* parsed tag node, but should only be called if the current token is {@link TokenType#LT}
@@ -1130,45 +1237,55 @@
}
return new XmlTagNode(nodeStart, tag, attributes, attributeEnd, tagNodes, contentEnd, closingTag, nodeEnd);
}
+
/**
* Report the current token as unexpected
*/
void reportUnexpectedToken() {
}
}
+
/**
* Instances of {@code XmlTagNode} represent XML or HTML elements such as {@code <p>} and{@code <body foo="bar"> ... </body>}.
* @coverage dart.engine.html
*/
class XmlTagNode extends XmlNode {
+
/**
* Constant representing empty list of attributes.
*/
static List<XmlAttributeNode> NO_ATTRIBUTES = new UnmodifiableListView(new List<XmlAttributeNode>());
+
/**
* Constant representing empty list of tag nodes.
*/
static List<XmlTagNode> NO_TAG_NODES = new UnmodifiableListView(new List<XmlTagNode>());
+
/**
* The starting {@link TokenType#LT} token (not {@code null}).
*/
Token _nodeStart;
+
/**
* The {@link TokenType#TAG} token after the starting '&lt;' (not {@code null}).
*/
Token _tag;
+
/**
* The attributes contained by the receiver (not {@code null}, contains no {@code null}s).
*/
List<XmlAttributeNode> _attributes;
+
/**
* The {@link TokenType#GT} or {@link TokenType#SLASH_GT} token after the attributes (not{@code null}). The token may be the same token as {@link #nodeEnd} if there are no child{@link #tagNodes}.
*/
Token _attributeEnd;
+
/**
* The tag nodes contained in the receiver (not {@code null}, contains no {@code null}s).
*/
List<XmlTagNode> _tagNodes;
+
/**
* The token (not {@code null}) after the content, which may be
* <ul>
@@ -1181,15 +1298,18 @@
* </ul>
*/
Token _contentEnd;
+
/**
* The closing {@link TokenType#TAG} after the child elements or {@code null} if there is no
* content and the attributes ended with {@link TokenType#SLASH_GT}
*/
Token _closingTag;
+
/**
* The ending {@link TokenType#GT} or {@link TokenType#SLASH_GT} token (not {@code null}).
*/
Token _nodeEnd;
+
/**
* Construct a new instance representing an XML or HTML element
* @param nodeStart the starting {@link TokenType#LT} token (not {@code null})
@@ -1223,24 +1343,53 @@
this._nodeEnd = nodeEnd;
}
accept(XmlVisitor visitor) => visitor.visitXmlTagNode(this);
+
/**
+ * Answer the attribute with the specified name.
+ * @param name the attribute name
+ * @return the attribute or {@code null} if no matching attribute is found
+ */
+ XmlAttributeNode getAttribute(String name2) {
+ for (XmlAttributeNode attribute in _attributes) {
+ if (attribute.name.lexeme == name2) {
+ return attribute;
+ }
+ }
+ return null;
+ }
+
+ /**
* The {@link TokenType#GT} or {@link TokenType#SLASH_GT} token after the attributes (not{@code null}). The token may be the same token as {@link #nodeEnd} if there are no child{@link #tagNodes}.
* @return the token (not {@code null})
*/
Token get attributeEnd => _attributeEnd;
+
/**
* Answer the receiver's attributes. Callers should not manipulate the returned list to edit the
* AST structure.
* @return the attributes (not {@code null}, contains no {@code null}s)
*/
List<XmlAttributeNode> get attributes => _attributes;
+
+ /**
+ * Find the attribute with the given name (see {@link #getAttribute(String)} and answer the lexeme
+ * for the attribute's value token without the leading and trailing quotes (see{@link XmlAttributeNode#getText()}).
+ * @param name the attribute name
+ * @return the attribute text or {@code null} if no matching attribute is found
+ */
+ String getAttributeText(String name) {
+ XmlAttributeNode attribute = getAttribute(name);
+ return attribute != null ? attribute.text : null;
+ }
Token get beginToken => _nodeStart;
+
/**
* The the closing {@link TokenType#TAG} after the child elements or {@code null} if there is no
* content and the attributes ended with {@link TokenType#SLASH_GT}
* @return the closing tag or {@code null}
*/
Token get closingTag => _closingTag;
+
/**
* Answer a string representing the content contained in the receiver. This includes the textual
* representation of any child tag nodes ({@link #getTagNodes()}). Whitespace between '&lt;',
@@ -1264,6 +1413,7 @@
}
return buffer.toString();
}
+
/**
* Answer the token (not {@code null}) after the content, which may be
* <ul>
@@ -1298,21 +1448,25 @@
}
return _tag;
}
+
/**
* Answer the ending {@link TokenType#GT} or {@link TokenType#SLASH_GT} token.
* @return the token (not {@code null})
*/
Token get nodeEnd => _nodeEnd;
+
/**
* Answer the starting {@link TokenType#LT} token.
* @return the token (not {@code null})
*/
Token get nodeStart => _nodeStart;
+
/**
* Answer the {@link TokenType#TAG} token after the starting '&lt;'.
* @return the token (not {@code null})
*/
Token get tag => _tag;
+
/**
* Answer the tag nodes contained in the receiver. Callers should not manipulate the returned list
* to edit the AST structure.
@@ -1327,6 +1481,7 @@
node.accept(visitor);
}
}
+
/**
* Same as {@link #becomeParentOf(List)}, but returns given "ifEmpty" if "children" is empty
*/
@@ -1337,6 +1492,7 @@
return becomeParentOf(children);
}
}
+
/**
* Instances of the class {@code HtmlParser} are used to parse tokens into a AST structure comprised
* of {@link XmlNode}s.
@@ -1344,12 +1500,14 @@
*/
class HtmlParser extends XmlParser {
static Set<String> SELF_CLOSING = new Set<String>();
+
/**
* Construct a parser for the specified source.
* @param source the source being parsed
*/
HtmlParser(Source source) : super(source) {
}
+
/**
* Parse the tokens specified by the given scan result.
* @param scanResult the result of scanning an HTML source (not {@code null})
@@ -1361,6 +1519,7 @@
HtmlUnit unit = new HtmlUnit(firstToken, tagNodes, currentToken);
return new HtmlParseResult(scanResult.modificationTime, firstToken, scanResult.lineStarts, unit);
}
+
/**
* Scan then parse the specified source.
* @param source the source to be scanned and parsed (not {@code null})
@@ -1373,28 +1532,34 @@
}
bool isSelfClosing(Token tag) => SELF_CLOSING.contains(tag.lexeme);
}
+
/**
* Instances of the class {@code HtmlUnit} represent the contents of an HTML file.
* @coverage dart.engine.html
*/
class HtmlUnit extends XmlNode {
+
/**
* The first token in the token stream that was parsed to form this HTML unit.
*/
Token _beginToken;
+
/**
* The last token in the token stream that was parsed to form this compilation unit. This token
* should always have a type of {@link TokenType.EOF}.
*/
Token _endToken;
+
/**
* The tag nodes contained in the receiver (not {@code null}, contains no {@code null}s).
*/
List<XmlTagNode> _tagNodes;
+
/**
* The element associated with this HTML unit or {@code null} if the receiver is not resolved.
*/
HtmlElementImpl _element;
+
/**
* Construct a new instance representing the content of an HTML file.
* @param beginToken the first token in the file (not {@code null})
@@ -1408,18 +1573,21 @@
}
accept(XmlVisitor visitor) => visitor.visitHtmlUnit(this);
Token get beginToken => _beginToken;
+
/**
* Return the element associated with this HTML unit.
* @return the element or {@code null} if the receiver is not resolved
*/
HtmlElementImpl get element => _element;
Token get endToken => _endToken;
+
/**
* Answer the tag nodes contained in the receiver. Callers should not manipulate the returned list
* to edit the AST structure.
* @return the children (not {@code null}, contains no {@code null}s)
*/
List<XmlTagNode> get tagNodes => _tagNodes;
+
/**
* Set the element associated with this HTML unit.
* @param element the element

Powered by Google App Engine
This is Rietveld 408576698