El producto de la traducción - que es la entrada para el intérprete - es un árbol. Cada operación del intérprete es un nodo del árbol. Los argumentos de la operación son los hijos del nodo.
Hay diferentes tipos de operadores. Por ejemplo el operador binario add toma dos valores de la pila y empuja la suma. El operador unario readline toma un manejador de ficheros de la pila y empuja el valor leído.
Algunos operadores actúan sobre listas. Por ejemplo print toma un número variable de elementos de la pila. Los operadores de listas se apoyan en un uso previo del operador pushmark para marcar el comienzo de la listade argumentos.
Los módulos en la familia B::* permiten acceder a dicho árbol
( B , B::Deparse , B::Bytecode , B::ByteLoader , etc.).
El módulo B
representa cada operador como una subclase
de la clase B::OP . Estas clases contienen métodos que nos permiten
obtener información sobre o modificar el estado interno del
operador. Por ejemplo obtener los hijos de un operador.
Para tener una visión en profundidad del tema puede consultar
los libros de Simon Cozens
[]
y
[8].