IDE Development Course
Andrew Vasilyev
Develop a functional mini-IDE for the IDELang language, encapsulating core text editing, syntax highlighting, error detection, and advanced features of modern development environments.
Teams may not exceed 2 students.
Existing controls for text editors are not allowed. Implement the text editor from scratch using the graphic API for text rendering.
Parser generators, such as ANTLR, are not permitted. They won't help :)
Submit source code via github.
Defend your project.
Evaluation will be based on:
IDELang is an educational programming language designed for the IDE Development course. With a focus on simplicity, it incorporates basic data types, arithmetic and boolean operations, conditional structures, as well as function and procedure definitions.
number: Support for integer arithmetic.
var number = 42;
string: Represent textual data.
var greeting = "Hello, IDELang!";
bool: Defined as `true` and `false`.
var isTrue = true;
Variables are declared using the `var` keyword, with type being inferred from the assigned value.
var x = 5;
Supported operations: +
, -
, *
, /
var sum = x + 10;
%
: String concatenation
var fullName = "Hello " % "World!";
Supported operations: &&
, ||
, !
, ==
,
!=
var bothTrue = (x > 4) && (z == true);
if(condition) { ... }
if(condition) { ... } else { ... }
Examples:
if (x > 10) { y = "Greater"; }
if (z) { y = "True"; } else { y = "False"; }
While loops: while(condition) { ... }
var i = 0;
while (i < 5) {
i = i + 1;
}
Functions are defined using the `func` keyword and their return type is inferred based on the type of the returned value.
func add(a: number, b: number)
{
return a + b; // Inferred return type: number
}
There can be different functions with same names but different sets of parameters.
Procedures are introduced using the `proc` keyword and do not return a value.
proc display(message: string) {
...
}
The `print` operation is used to display output.
print("Hello, World!"); // Displays: Hello, World!
print(x); // Displays the value of x
print(y % " there!"); // Displays: hello there!
main.idl
, utils.idl
Each project should maintain a metadata file (like a `.idlconfig` or `.idlproj`) that holds:
Thank you for your attention!
I'm now open to any questions you might have.