NAME

tools/build/ops2c.pl - Parser for .ops files

SYNOPSIS

    % perl tools/build/ops2c.pl trans [--help] [--no-lines] [--dynamic]
                                      [--core | input.ops [input2.ops ...]]
       trans := C

For example:

    % perl tools/build/ops2c.pl C --core

    % perl tools/build/ops2c.pl C --dynamic myops.ops

DESCRIPTION

This script uses a supplied transform to create a pair of C header and implementation files from the operation definitions found in one or more *.ops files.

Transforms

The first command-line argument is the last package name component of a subclass of Parrot::OpTrans. These subclasses all have full names of the form Parrot::OpTrans::*. An instance of the class is created and later consulted for various bits of information needed to generate the C code. Each creates a different type of run loop.

C
Create the function-based (slow or fast core) run loop.

Options

--help
Print synopsis.
--dynamic
Indicate that the opcode library is dynamic.
--core
Build the Parrot core opcode library.
--no-lines
Do not generate #line directives in the generated C code.

NOTE

Most of the functionality in tools/build/ops2c.pl has been extracted into methods and subroutines found in Parrot::Ops2c::Utils and Parrot::Ops2c::Auxiliary. This refactoring facilitates unit testing and coverage analysis of that functionality. A test suite has been provided in t/tools/ops2cutils/. It is recommended that future refactoring of this functionality proceed in a test-driven manner, i.e., tests should be written reflecting any changes to interface or functionality; the code should be written which implements the revisions; the code should be tested; and coverage analysis should be performed with Devel::Cover to measure the extent to which the tests exercise the code.

AUTHORS

Based on the commit logs, the following members of the Parrot project have contributed to this program:

    ambs bernhard boemmels brentdax chip
    coke dan gregor grunblatt jgoff
    jkeenan jonathan josh jrieks leo
    mikescott mrjoltcola nicholas particle paultcochrane
    petdance rgrjr robert simon

SEE ALSO

tools/build/ops2pm.pl
Parrot::OpsFile
Parrot::Op
Parrot::OpTrans
Parrot::OpTrans::C
Parrot::Ops2c::Utils
Parrot::Ops2c::Auxiliary