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 | CGoto | CGP | CSwitch | CPrederef
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.
CGoto
Create the CGP
Create the CSwitch
Create the CPrederef
Create the predereferenced run loop.
goto
run loop.
goto
and predereferenced run loop.
switch
ed and predereferenced 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