66 lines
1.9 KiB
C#
66 lines
1.9 KiB
C#
using Compiler;
|
|
|
|
const string contents = """
|
|
struct person {
|
|
age: i32
|
|
name: string
|
|
}
|
|
|
|
func main(: i32 {
|
|
let x: i32 = 23
|
|
x = 24
|
|
|
|
if true {
|
|
x = 49
|
|
} else {
|
|
x = 3
|
|
}
|
|
|
|
let i: i32 = 0
|
|
|
|
x = 1 + 2 * 34
|
|
|
|
while i < 10 {
|
|
i = i + 1
|
|
x = i
|
|
}
|
|
|
|
let me: person = struct person { age = 21 name = "Oliver" }
|
|
|
|
do_something(me.name)
|
|
return x
|
|
}
|
|
|
|
func do_something(text: string): void {
|
|
}
|
|
""";
|
|
|
|
var tokens = Tokenizer.Tokenize("test.nub", contents, out var tokenizerDiagnostics);
|
|
|
|
foreach (var diagnostic in tokenizerDiagnostics)
|
|
{
|
|
Console.WriteLine(diagnostic.Message);
|
|
}
|
|
|
|
if (tokenizerDiagnostics.Any(x => x.Severity == DiagnosticSeverity.Error))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
var nodes = Parser.Parse("test.nub", tokens, out var parserDiagnostics);
|
|
|
|
foreach (var diagnostic in parserDiagnostics)
|
|
{
|
|
Console.WriteLine(diagnostic.Message);
|
|
}
|
|
|
|
if (parserDiagnostics.Any(x => x.Severity == DiagnosticSeverity.Error))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
var output = Generator.Emit(nodes);
|
|
|
|
File.WriteAllText("C:/Users/oliste/repos/nub-lang/compiler/Compiler/out.c", output);
|
|
|
|
return 0; |