Setting Hooks: Module hooks

This provide some default hooks.

pyrser.hooks.echo.echo_nodes(self, rest)[source]

Print nodes.

example:

R = [
    In : node #echo("coucou", 12, node)
]
pyrser.hooks.set.set_node(self, dst, src)[source]

Basically copy one node to another. usefull to transmit a node from a terminal rule as result of the current rule.

example:

R = [
    In : node #set(_, node)
]

here the node return by the rule In is also the node return by the rule R

pyrser.hooks.set.set_node_as_int(self, dst, src)[source]

Set a int literal to a node

example:

R = [
    In : node #setint(node, 12)
]
pyrser.hooks.set.set_node_as_str(self, dst, src)[source]

Set a str literal to a node

example:

R = [
    In : node #setstr(node, "toto")
]
pyrser.hooks.set.get_subnode(self, dst, ast, expr)[source]

get the value of subnode

example:

R = [
    __scope__:big  getsomethingbig:>big
    #get(_, big, '.val') // copy big.val into _
]
pyrser.hooks.vars.vars_nodes(self, rest)[source]

Vars one node instance.

example:

R = [
    In : node #vars(node)
]
pyrser.hooks.dump_nodes.dump_nodes(self)[source]

Dump tag,rule,id and value cache. For debug.

example:

R = [
    #dump_nodes
]
pyrser.hooks.predicate.pred_false(self)[source]

False in parser. Go to alternative...

example:

R = [
    #false | R2
]
pyrser.hooks.predicate.pred_true(self)[source]

True in parser. Do nothing

example:

R = [
    R2 | #true
]
pyrser.hooks.predicate.pred_eq(self, n, val)[source]

Test if a node set with setint or setstr equal a certain value

example:

R = [
    __scope__:n
    ['a' #setint(n, 12) | 'b' #setint(n, 14)]
    C
    [#eq(n, 12) D]
]
pyrser.hooks.predicate.pred_neq(self, n, val)[source]

Test if a node set with setint or setstr not equal a certain value

example:

R = [
    __scope__:n
    ['a' #setint(n, 12) | 'b' #setint(n, 14)]
    C
    [#neq(n, 12) D]
]