Manpage logo

SPVM::Native::Compiler - Native::Compiler

Name  Description  Usage  Pointer  Class Methods  new  Instance Methods  get_include_dirs_length  get_include_dir  add_include_dir  prepend_include_dir  clear_include_dirs  set_start_file  set_start_line  compile  get_error_messages  get_runtime  get_class_file  compile_anon_class  compile_script  See Also  Native::Runtime  Copyright & License  Copyright & License 

Name

SPVM::Native::Compiler − Native::Compiler

Description

"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.

Usage

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;

Pointer

The "Native::Compiler" class is a pointer class.

Its insntace has a pointer to a compiler object.

Class Methods

new

"static method new : Native::Compiler ();"

Creates a new "Native::Compiler" object and returns it.

Instance Methods

get_include_dirs_length

"method get_include_dirs_length : int ();"

Returns the length of the class search directories.

get_include_dir

"method get_include_dir : string ($index : int);"

Returns a class search directory at the index $index.

add_include_dir

"method add_include_dir : void ($include_dir : string);"

Adds a class search directory at the tail of the current class search directories.

prepend_include_dir

"method prepend_include_dir : void ($include_dir : string);"

Adds a class search directory at the head of the current class search directories.

clear_include_dirs

"method clear_include_dirs : void ();"

Removes all class search directories.

set_start_file

"method set_start_file : void ($start_file : string);"

Sets the name of the file to start the compiling by "compile" method.

set_start_line

"method set_start_line : void ($start_line : int);"

Sets the line to start compiling by "compile" method.

compile

"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.

get_error_messages

"method get_error_messages : string[] ();"

Returns compilation error messages in this compiling by "compile" method.

get_runtime

"method get_runtime : Native::Runtime ();"

Returns the runtime.

The return value is a Native::Runtime object.

get_class_file

"method get_class_file : Native::ClassFile ($class_name : string);"

Gets a Native::ClassFile object by a class name, and returns it.

compile_anon_class

"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;

compile_script

"native method compile_script : string ($source : string);"

Same as "compile_anon_class".

Eamples:

my $source = <<'EOS';
use Fn;
my $var = 1;
say $var;
EOS

See Also

Native::Runtime

The instance of Native::Runtime class is build by "get_runtime" method in this class.

Copyright & License

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 & License

Copyright (c) 2023 Yuki Kimoto

MIT License


Updated 2026-06-01 - jenkler.se | uex.se