Add dvd builder script

This commit is contained in:
2025-05-08 20:19:44 -05:00
parent 8b1f0786f4
commit 0c1ead790d
14 changed files with 1359 additions and 51 deletions

View File

@@ -588,9 +588,20 @@ namespace Tesses::CrossLang
{
if(i >= tokens.size()) throw std::out_of_range("End of file");
auto variable = tokens[i];
i++;
if(variable.type != LexTokenType::Identifier) throw SyntaxException(variable.lineInfo, "Expected an identifier got a " + LexTokenType_ToString(variable.type) + " \"" + variable.text + "\"");
i++;
if(variable.type == LexTokenType::Symbol && variable.text == "[")
{
node = AdvancedSyntaxNode::Create(DeclareExpression,true,{
AdvancedSyntaxNode::Create(ArrayExpression ,true,{ParseExpression()})
});
EnsureSymbol("]");
}
else if(variable.type != LexTokenType::Identifier) throw SyntaxException(variable.lineInfo, "Expected an identifier got a " + LexTokenType_ToString(variable.type) + " \"" + variable.text + "\"");
else
{
node = AdvancedSyntaxNode::Create(DeclareExpression,true,{variable.text});
}
}
else if(IsIdentifier("operator"))
{
@@ -1189,9 +1200,19 @@ namespace Tesses::CrossLang
}
if(IsIdentifier("throw"))
{
auto tkn2 = tkn;
auto v = ParseExpression();
EnsureSymbol(";");
return AdvancedSyntaxNode::Create(ThrowStatement,false,{v});
return AdvancedSyntaxNode::Create(ThrowStatement,false,{v,tkn2.lineInfo.filename,(int64_t)tkn2.lineInfo.line,(int64_t)tkn2.lineInfo.column,(int64_t)tkn.lineInfo.offset});
}
if(IsIdentifier("breakpoint"))
{
auto tkn2 = tkn;
auto v = ParseExpression();
EnsureSymbol(";");
return AdvancedSyntaxNode::Create(BreakpointStatement,false,{v,tkn2.lineInfo.filename,(int64_t)tkn2.lineInfo.line,(int64_t)tkn2.lineInfo.column,(int64_t)tkn.lineInfo.offset});
}
if(IsIdentifier("try"))
{
@@ -1355,4 +1376,4 @@ namespace Tesses::CrossLang
}
return expr;
}
}
}