Source
nitc :: AbstractHighlightVisitor :: _first_line
The first line to generate, null if start at the first linenitc :: AbstractHighlightVisitor :: _include_loose_tokens
When highlighting a node, also consider the loose tokens around it.nitc :: AbstractHighlightVisitor :: _include_whole_lines
When highlighting a node, the first and the last lines are fully included.nitc :: AbstractHighlightVisitor :: _last_line
The last line to generate, null if finish at the last linenitc :: AbstractHighlightVisitor :: _show_messages
When highlighting a node, show its messages (errors, warnings), if any.nitc :: AbstractHighlightVisitor :: do_highlight
Low-level highlighting between 2 tokensnitc :: AbstractHighlightVisitor :: first_line
The first line to generate, null if start at the first linenitc :: AbstractHighlightVisitor :: first_line=
The first line to generate, null if start at the first linenitc :: AbstractHighlightVisitor :: highlight_node
Highlight a AST element.nitc :: AbstractHighlightVisitor :: highlight_source
Highlight a full lexed source file.nitc :: AbstractHighlightVisitor :: include_loose_tokens
When highlighting a node, also consider the loose tokens around it.nitc :: AbstractHighlightVisitor :: include_loose_tokens=
When highlighting a node, also consider the loose tokens around it.nitc :: AbstractHighlightVisitor :: include_whole_lines
When highlighting a node, the first and the last lines are fully included.nitc :: AbstractHighlightVisitor :: include_whole_lines=
When highlighting a node, the first and the last lines are fully included.nitc :: AbstractHighlightVisitor :: last_line
The last line to generate, null if finish at the last linenitc :: AbstractHighlightVisitor :: last_line=
The last line to generate, null if finish at the last linenitc :: AbstractHighlightVisitor :: show_messages
When highlighting a node, show its messages (errors, warnings), if any.nitc :: AbstractHighlightVisitor :: show_messages=
When highlighting a node, show its messages (errors, warnings), if any.nitc $ AbstractHighlightVisitor :: SELF
Type of this instance, automatically specialized in every classnitc :: AbstractHighlightVisitor :: _first_line
The first line to generate, null if start at the first linenitc :: AbstractHighlightVisitor :: _include_loose_tokens
When highlighting a node, also consider the loose tokens around it.nitc :: AbstractHighlightVisitor :: _include_whole_lines
When highlighting a node, the first and the last lines are fully included.nitc :: AbstractHighlightVisitor :: _last_line
The last line to generate, null if finish at the last linenitc :: AbstractHighlightVisitor :: _show_messages
When highlighting a node, show its messages (errors, warnings), if any.core :: Object :: class_factory
Implementation used byget_class
to create the specific class.
core :: Object :: defaultinit
nitc :: AbstractHighlightVisitor :: do_highlight
Low-level highlighting between 2 tokensnitc :: AbstractHighlightVisitor :: first_line
The first line to generate, null if start at the first linenitc :: AbstractHighlightVisitor :: first_line=
The first line to generate, null if start at the first linenitc :: AbstractHighlightVisitor :: highlight_node
Highlight a AST element.nitc :: AbstractHighlightVisitor :: highlight_source
Highlight a full lexed source file.nitc :: AbstractHighlightVisitor :: include_loose_tokens
When highlighting a node, also consider the loose tokens around it.nitc :: AbstractHighlightVisitor :: include_loose_tokens=
When highlighting a node, also consider the loose tokens around it.nitc :: AbstractHighlightVisitor :: include_whole_lines
When highlighting a node, the first and the last lines are fully included.nitc :: AbstractHighlightVisitor :: include_whole_lines=
When highlighting a node, the first and the last lines are fully included.core :: Object :: is_same_instance
Return true ifself
and other
are the same instance (i.e. same identity).
core :: Object :: is_same_serialized
Isself
the same as other
in a serialization context?
core :: Object :: is_same_type
Return true ifself
and other
have the same dynamic type.
nitc :: AbstractHighlightVisitor :: last_line
The last line to generate, null if finish at the last linenitc :: AbstractHighlightVisitor :: last_line=
The last line to generate, null if finish at the last linecore :: Object :: native_class_name
The class name of the object in CString format.core :: Object :: output_class_name
Display class name on stdout (debug only).nitc :: AbstractHighlightVisitor :: show_messages
When highlighting a node, show its messages (errors, warnings), if any.nitc :: AbstractHighlightVisitor :: show_messages=
When highlighting a node, show its messages (errors, warnings), if any.Source
# Visitor used to produce a HTML tree based on a AST on a `Source`
class AbstractHighlightVisitor
# The first line to generate, null if start at the first line
var first_line: nullable Int = null is writable
# The last line to generate, null if finish at the last line
var last_line: nullable Int = null is writable
# When highlighting a node, show its messages (errors, warnings), if any.
#
# default: true
var show_messages = true is writable
# When highlighting a node, also consider the loose tokens around it.
#
# Loose tokens are tokens discarded from the AST but attached before
# or after some non-loose tokens. See `Token::is_loose`.
#
# When this flag is set to `true`, the loose tokens that are before the
# first token and after the last token are also highlighted.
#
# Default: false.
var include_loose_tokens = false is writable
# When highlighting a node, the first and the last lines are fully included.
#
# If the highlighted node starts (or ends) in the middle of a line,
# this flags forces the whole line to be highlighted.
#
# Default: false
var include_whole_lines = false is writable
# Highlight a AST element.
fun highlight_node(n: ANode)
do
n.parentize_tokens
var f
var l
if n isa Token then
f = n
l = n
else
assert n isa Prod
f = n.first_token
if f == null then return
l = n.last_token
if l == null then return
end
if include_loose_tokens then
if f.prev_looses.not_empty then f = f.prev_looses.first
if l.next_looses.not_empty then l = l.next_looses.last
end
var line = first_line
if line != null then
while f.location.line_start < line do
f = f.next_token
if f == null then return
end
end
line = last_line
if line != null then
while l.location.line_end > line do
l = l.prev_token
if l == null then return
end
end
if include_whole_lines then
f = f.first_real_token_in_line
l = l.last_real_token_in_line
end
do_highlight(f, l)
end
# Highlight a full lexed source file.
#
# REQUIRE `source.first_token != null`
fun highlight_source(source: SourceFile)
do
do_highlight(source.first_token.as(not null), null)
end
# Low-level highlighting between 2 tokens
protected fun do_highlight(first_token: Token, last_token: nullable Token) is abstract
end
src/highlight.nit:22,1--112,3