Skip to content

Commit 6c127fe

Browse files
committed
add compilation stages to list
1 parent 6c6d886 commit 6c127fe

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

docs/topics/compiler-plugins/custom-compiler-plugins.md

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,23 @@ API is **unstable**. You need to invest significant ongoing effort to maintain i
1515

1616
### The Kotlin compiler and compiler plugins
1717

18-
![Kotlin compiler stages](compiler-stages.svg){width=300}
19-
20-
The Kotlin compiler:
21-
22-
1. Parses the source code and turns it into a structured syntax tree.
23-
2. Analyzes and resolves the code by determining what it means, resolving names, checking types, and enforcing visibility rules.
24-
3. Generates an Intermediate Representation (IR), a data structure that acts as a bridge between source code and machine code.
25-
4. Progressively lowers the IR into simpler forms.
26-
5. Translates the lowered IR into target-specific output, such as JVM bytecode, JavaScript, or native machine code.
18+
<list columns="2">
19+
<li>
20+
<p></p>
21+
<br>
22+
<img src="compiler-stages.svg" width="400" alt="Kotlin compilation stages"/>
23+
</li>
24+
<li>
25+
<p>The Kotlin compiler:</p>
26+
<ol>
27+
<li>Parses the source code and turns it into a structured syntax tree.</li>
28+
<li>Analyzes and resolves the code by determining what it means, resolving names, checking types, and enforcing visibility rules.</li>
29+
<li>Generates an Intermediate Representation (IR), a data structure that acts as a bridge between source code and machine code. </li>
30+
<li>Progressively lowers the IR into simpler forms.</li>
31+
<li>Translates the lowered IR into target-specific output, such as JVM bytecode, JavaScript, or native machine code.</li>
32+
</ol>
33+
</li>
34+
</list>
2735

2836
Plugins can affect the initial compiler stages through the frontend API, changing how the compiler resolves code.
2937
For example, a plugin can add annotations or introduce new methods without bodies, or change visibility modifiers. These

0 commit comments

Comments
 (0)