summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/parser/ParserTokens.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/parser/ParserTokens.h')
-rw-r--r--Source/JavaScriptCore/parser/ParserTokens.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/parser/ParserTokens.h b/Source/JavaScriptCore/parser/ParserTokens.h
index ed9780b52..898fe62cb 100644
--- a/Source/JavaScriptCore/parser/ParserTokens.h
+++ b/Source/JavaScriptCore/parser/ParserTokens.h
@@ -150,6 +150,23 @@ enum JSTokenType {
INVALID_STRING_LITERAL_ERRORTOK = 9 | ErrorTokenFlag,
};
+struct JSTextPosition {
+ JSTextPosition() : line(0), offset(0), lineStartOffset(0) { }
+ JSTextPosition(int _line, int _offset, int _lineStartOffset) : line(_line), offset(_offset), lineStartOffset(_lineStartOffset) { }
+ JSTextPosition(const JSTextPosition& other) : line(other.line), offset(other.offset), lineStartOffset(other.lineStartOffset) { }
+
+ JSTextPosition operator+(int adjustment) const { return JSTextPosition(line, offset + adjustment, lineStartOffset); }
+ JSTextPosition operator+(unsigned adjustment) const { return *this + static_cast<int>(adjustment); }
+ JSTextPosition operator-(int adjustment) const { return *this + (- adjustment); }
+ JSTextPosition operator-(unsigned adjustment) const { return *this + (- static_cast<int>(adjustment)); }
+
+ operator int() const { return offset; }
+
+ int line;
+ int offset;
+ int lineStartOffset;
+};
+
union JSTokenData {
struct {
uint32_t line;
@@ -180,6 +197,8 @@ struct JSToken {
JSTokenType m_type;
JSTokenData m_data;
JSTokenLocation m_location;
+ JSTextPosition m_startPosition;
+ JSTextPosition m_endPosition;
};
} // namespace JSC