PCT::HLLCompiler - base class for compiler objects
This file implements a HLLCompiler
class of objects used for creating HLL compilers.
It provides the standard methods required for all compilers,
as well as some standard scaffolding for running compilers from a command line.
- attr(string attrname,
pmc value,
int has_value)
- Helper method for accessors -- gets/sets an attribute given by
attrname
based on has_value
.
- panic(message :slurpy)
- Helper method to throw an exception (with a message).
- language(string name)
- Register this object as the compiler for
name
using the compreg
opcode.
- stages([stages])
- Accessor for the
stages
attribute.
- parsegrammar([string grammar])
- Accessor for the
parsegrammar
attribute.
- parseactions([actions])
- Accessor for the
parseactions
attribute.
- astgrammar([string grammar])
- Accessor for the
astgrammar
attribute.
- commandline_banner([string value])
- Set the string in $S0 as a commandline prompt on the compiler in $P0.
The prompt is the text that is shown on the commandline before a command is entered when the compiler is started in interactive mode.
- commandline_prompt([string value])
- Set the string in $S0 as a commandline banner on the compiler in $P0.
The banner is the first text that is shown when the comâ piler is started in interactive mode.
This can be used for a copyright notice or other information.
- removestage(string stagename)
- Delete a stage from the compilation process queue.
- addstage(string stagename [,
"option" => value,
...
])
- Add a stage to the compilation process queue.
Takes either a "before" or "after" named argument,
which gives the relative ordering of the stage to be added.
If "before" and "after" aren't specified,
the new stage is inserted at the end of the queue.
- It's possible to add multiple stages of the same name: for example,
you might repeat a stage like "optimize_tree" or "display_benchmarks" after each transformation.
If you have multiple stages of the same name,
and add a new stage before or after that repeated stage,
the new stage will be added at every instance of the repeated stage.
- compile(pmc code [,
"option" => value,
...
])
- Compile
source
(possibly modified by any provided options) by iterating through any stages identified for this compiler.
If a target
option is provided,
then halt the iteration when the stage corresponding to target has been reached.
- parse(source [,
"option" => value,
...])
- Parse
source
using the compiler's parsegrammar
according to any options and return the resulting parse tree.
- past(source [,
"option" => value,
...])
- Transform
source
into PAST using the compiler's astgrammar
according to any options,
and return the resulting ast.
- post(source [,
adverbs :slurpy :named])
- Transform PAST
source
into POST.
- eval(code [,
"option" => value,
...])
- Compile and execute the given
code
taking into account any options provided.
- interactive(["encoding" => encoding] [,
"option" => value,
...])
- Runs an interactive compilation session -- reads lines of input from the standard input and evaluates each.
The
encoding
option specifies the encoding to use for the input (e.g.,
"utf8").
- evalfiles(files [,
args] [,
"encoding" => encoding] [,
"option" => value,
...])
- Compile and evaluate a file or files.
The
files
argument may be either a single filename or an array of files to be processed as a single compilation unit.
The encoding
option specifies the encoding to use when reading the files,
and any remaining options are passed to the evaluator.
- process_args(PMC args)
- Performs option processing of command-line args
- command_line(PMC args)
- Generic method for compilers invoked from a shell command line.
- parse_name(string name)
- Split
name
into its component namespace parts,
as required by pdd21.
The default is simply to split the name based on double-colon separators.
- usage()
- A usage method.
- version()
- Display compiler version information.
Patrick R.
Michaud <pmichaud@pobox.com>