package syntax support

For now it's just sugar syntax.
This commit is contained in:
Jaime Humberto Macias Bustamante
2025-08-03 21:28:59 -07:00
parent 83aa0f3856
commit 6bd3f26746
5 changed files with 19 additions and 1 deletions
+2
View File
@@ -124,6 +124,8 @@ class Bytes {
#end
bout.addByte(Type.enumIndex(e));
switch( e ) {
case EPackage(n):
// TODO
case EImport(c):
// TODO
case EClass(_, _, _, _):
+1
View File
@@ -79,6 +79,7 @@ enum Expr {
EMeta( name : String, args : Array<Expr>, e : Expr );
ECheckType( e : Expr, t : CType );
EPackage( ?n:String );
EImport( c : String, ?asname:String, ?isUsing:Bool );
EClass( name:String, fields:Array<Expr>, ?extend:String, interfaces:Array<String>, ?isFinal:Bool, ?isPrivate:Bool );
EEnum( en:EnumDecl, ?isAbstract:Bool );
+1
View File
@@ -703,6 +703,7 @@ class Interp {
var e = e.e;
#end
switch (e) {
case EPackage(_):
case EClass(name, fields, extend, interfaces, isFinal):
var oldName:String = name;
var hasAlias:Bool = (setAlias != null && beforeAlias == oldName);
+10 -1
View File
@@ -957,6 +957,15 @@ class Parser {
var tk = token();
push(tk);
mk(EFunction(inf.args, inf.body, name, inf.ret, nextIsPublic, nextIsStatic, nextIsOverride, nextIsPrivate, nextIsFinal, nextIsInline),p1,pmax(inf.body));
case "package":
var tk = token();
if(tk == TSemicolon)
mk(EPackage(null), p1);
push(tk);
var pkg:String = parsePath().join('.');
ensure(TSemicolon);
mk(EPackage(pkg), p1);
case "import" | "using":
var isUsing = id == "using";
var oldReadPos = readPos;
@@ -1160,7 +1169,7 @@ class Parser {
e = parseExpr();
}
mk(ECast(e, t));
mk(ECast(e, t), p1);
case "return":
var tk = token();
push(tk);
+5
View File
@@ -116,6 +116,11 @@ class Printer {
return;
}
switch(Tools.expr(e)) {
case EPackage(n):
add('package');
if(n != null)
add(' $n');
add(';\n');
case EImport(c, n, u):
add('${u ? 'using' : 'import'} $c');
if(n != null)