Simon Krajewski 11 rokov pred
rodič
commit
4b0005d91e
4 zmenil súbory, kde vykonal 40 pridanie a 6 odobranie
  1. 3 1
      Makefile
  2. 17 0
      common.ml
  3. 6 0
      genpy.ml
  4. 14 5
      main.ml

+ 3 - 1
Makefile

@@ -36,7 +36,7 @@ EXPORT=../../../projects/motionTools/haxe
 
 MODULES=ast type lexer common genxml parser typecore optimizer typeload \
 codegen gencommon genas3 gencpp genjs genneko genphp genswf8 \
-	genswf9 genswf genjava gencs interp dce filters typer matcher version main
+	genswf9 genswf genjava gencs genpy interp dce filters typer matcher version main
 
 ADD_REVISION=0
 
@@ -133,6 +133,8 @@ genneko.cmx: type.cmx lexer.cmx common.cmx codegen.cmx ast.cmx
 
 genphp.cmx: type.cmx lexer.cmx common.cmx codegen.cmx ast.cmx
 
+genpy.cmx: type.cmx lexer.cmx common.cmx codegen.cmx ast.cmx
+
 genswf.cmx: type.cmx genswf9.cmx genswf8.cmx common.cmx ast.cmx
 
 genswf8.cmx: type.cmx lexer.cmx common.cmx codegen.cmx ast.cmx

+ 17 - 0
common.ml

@@ -57,6 +57,7 @@ type platform =
 	| Cpp
 	| Cs
 	| Java
+	| Python
 
 (**
 	The capture policy tells which handling we make of captured locals
@@ -630,6 +631,21 @@ let get_config com =
 			pf_can_skip_non_nullable_argument = true;
 			pf_ignore_unsafe_cast = false;
 		}
+	| Python ->
+		{
+			pf_static = false;
+			pf_sys = false;
+			pf_locals_scope = false;
+			pf_captured_scope = false;
+			pf_unique_locals = false;
+			pf_capture_policy = CPLoopVars;
+			pf_pad_nulls = false;
+			pf_add_final_return = false;
+			pf_overload = false;
+			pf_pattern_matching = false;
+			pf_can_skip_non_nullable_argument = true;
+			pf_ignore_unsafe_cast = true;
+		}
 
 let memory_marker = [|Unix.time()|]
 
@@ -738,6 +754,7 @@ let platform_name = function
 	| Cpp -> "cpp"
 	| Cs -> "cs"
 	| Java -> "java"
+	| Python -> "python"
 
 let flash_versions = List.map (fun v ->
 	let maj = int_of_float v in

+ 6 - 0
genpy.ml

@@ -0,0 +1,6 @@
+open Ast
+open Type
+open Common
+
+let generate com =
+	()

+ 14 - 5
main.ml

@@ -1002,6 +1002,9 @@ try
 			cp_libs := "hxjava" :: !cp_libs;
 			set_platform Java dir;
 		),"<directory> : generate Java code into target directory");
+		("-python",Arg.String (fun dir ->
+			set_platform Python dir;
+		),"<directory> : generate Python code into target directory");
 		("-xml",Arg.String (fun file ->
 			Parser.use_doc := true;
 			xml_out := Some file
@@ -1336,13 +1339,16 @@ try
 			Gencs.before_generate com;
 			add_std "cs"; "cs"
 		| Java ->
-      let old_flush = ctx.flush in
-      ctx.flush <- (fun () ->
-        List.iter (fun (_,_,close,_,_) -> close()) com.java_libs;
-        old_flush()
-      );
+			let old_flush = ctx.flush in
+			ctx.flush <- (fun () ->
+				List.iter (fun (_,_,close,_,_) -> close()) com.java_libs;
+				old_flush()
+			);
 			Genjava.before_generate com;
 			add_std "java"; "java"
+		| Python ->
+			add_std "python";
+			"python"
 	) in
 	(* if we are at the last compilation step, allow all packages accesses - in case of macros or opening another project file *)
 	if com.display <> DMNone && not ctx.has_next then com.package_rules <- PMap.foldi (fun p r acc -> match r with Forbidden -> acc | _ -> PMap.add p r acc) com.package_rules PMap.empty;
@@ -1427,6 +1433,9 @@ try
 		| Java ->
 			Common.log com ("Generating Java in : " ^ com.file);
 			Genjava.generate com;
+		| Python ->
+			Common.log com ("Generating python in : " ^ com.file);
+			Genpy.generate com;
 		);
 	end;
 	Sys.catch_break false;