Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Create LLVM IR for Perl5
C++ Perl C
branch: master
Failed to load latest commit information.
example Add Some Features.
gen remove warnings
inc/Module first commit
include work on linux
lib/Compiler/CodeGenerator remove warnings
src work on linux
t work on linux
.gitignore support building by llvm-3.2
Changes first commit
MANIFEST first commit
Makefile.PL support building by llvm-3.2
README.md first commit
type_test.c Add Some Features.
typemap first commit

README.md

NAME

Compiler::CodeGenerator::LLVM - Create LLVM IR for Perl5

INSTALLATION

# This module is dependent LLVM-3.3.
# Please install LLVM-3.3 before building.

wget http://llvm.org/releases/3.3/llvm-3.3.src.tar.gz
cd llvm-3.3.src && ./configure && make && make install

SYNOPSIS

use Compiler::Lexer;
use Compiler::Parser;
use Compiler::CodeGenerator::LLVM;

my $filename = $ARGV[0];
open(my $fh, "<", $filename) or die("$filename is not found.");
my $script = do { local $/; <$fh> };
my $lexer = Compiler::Lexer->new($filename);
my $tokens = $lexer->tokenize($script);
my $parser = Compiler::Parser->new();
my $ast = $parser->parse($tokens);
my $generator = Compiler::CodeGenerator::LLVM->new();    
my $llvm_ir = $generator->generate($ast); # generate LLVM-IR
$generator->debug_run($ast); # execute LLVM-IR with JIT

DESCRIPTION

Compiler::CodeGenerator::LLVM creates LLVM IR for perl5.

METHODS

  • my $generator = Compiler::CodeGenerator::LLVM->new();

    Create new instance of Compiler::CodeGenerator::LLVM.

  • my $llvm_ir = $generator->generate($ast);

    Get scalar value of LLVM IR. This method requires $ast from Compiler::Parser::parse

  • $generator->debug_run($ast);

    Execute LLVM-IR with JIT for debugging. This method requires $ast from Compiler::Parser::parse

LICENSE

Copyright (C) Masaaki Goshima (goccy).

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

Masaaki Goshima (goccy) goccy54@gmail.com

SEE ALSO

Compiler::Lexer Compiler::Parser

Something went wrong with that request. Please try again.