SPVM::Native::Compiler − Native::Compiler
"SPVM::Native::Compiler" is "Native::Compiler" class in SPVM language. It compiles SPVM source codes and builds the runtime.
The instance of Native::Runtime class is build by "get_runtime" method in this class.
use
Native::Compiler;
my $compiler = Native::Compiler−>new;
$compiler−>add_include_dir("lib");
$compiler−>set_start_file(__FILE__);
{
my $basic_type_name = "Foo";
$compiler−>set_start_line(__LINE__ + 1);
$compiler−>compile($basic_type_name);
}
{
my $basic_type_name = "Bar";
$compiler−>set_start_line(__LINE__ + 1);
$compiler−>compile($basic_type_name);
}
my $runtime = $compiler−>get_runtime;
The "Native::Compiler" class is a pointer class.
Its insntace has a pointer to a compiler object.
"static method new : Native::Compiler ();"
Creates a new "Native::Compiler" object and returns it.
"method get_include_dirs_length : int ();"
Returns the length of the class search directories.
"method get_include_dir : string ($index : int);"
Returns a class search directory at the index $index.
"method add_include_dir : void ($include_dir : string);"
Adds a class search directory at the tail of the current class search directories.
"method prepend_include_dir : void ($include_dir : string);"
Adds a class search directory at the head of the current class search directories.
"method clear_include_dirs : void ();"
Removes all class search directories.
"method set_start_file : void ($start_file : string);"
Sets the name of the file to start the compiling by "compile" method.
"method set_start_line : void ($start_line : int);"
Sets the line to start compiling by "compile" method.
"method compile : void ($class_name : string);"
Compiles a class given by the class name $class_name.
This method can be called multiple times.
Exceptions:
If compilation errors occurred, an exception is thrown set eval_errro_id to the basic type ID of Error::Compile class.
"method get_error_messages : string[] ();"
Returns compilation error messages in this compiling by "compile" method.
"method get_runtime : Native::Runtime ();"
Returns the runtime.
The return value is a Native::Runtime object.
"method get_class_file : Native::ClassFile ($class_name : string);"
Gets a Native::ClassFile object by a class name, and returns it.
"native method compile_anon_class : string ($source : string);"
Compiles a anon class, and return the generated anon class name.
This method can be called multiple times. Exceptions:
If compilation errors occurred, an exception is thrown set eval_errro_id to the basic type ID of Error::Compile class.
Examples:
use Native;
use Native::Compiler;
use Native::MethodCall;
my $compiler = Native−>get_current_compiler;
my $source = <<'EOS';
class {
use Fn;
static method sum : int ($num1 : int, $num2 : int) {
return $num1 + $num2;
}
}
EOS
$compiler−>set_start_file(__FILE__);
$compiler−>set_start_line(__LINE__ + 1);
my $anon_class_name =
$compiler−>compile_anon_class($source);;
my $ret =
Native::MethodCall−>call_class_method($anon_class_name,
"sum", [(object)1, 2]);;
say $ret−>(Int)−>value;
"native method compile_script : string ($source : string);"
Same as "compile_anon_class".
Eamples:
my $source =
<<'EOS';
use Fn;
my $var = 1;
say $var;
EOS
The instance of Native::Runtime class is build by "get_runtime" method in this class.
Copyright 2023−2023 Yuki Kimoto, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Copyright (c) 2023 Yuki Kimoto
MIT License