BashSpark
Loading...
Searching...
No Matches
bs::shell_node_visitor< visit_t > Class Template Referenceabstract

Generic visitor for shell AST nodes. More...

#include <shell_node_visitor.h>

Public Types

using visit_type = visit_t
 Type of data resulting of visit.
 

Public Member Functions

virtual visit_t visit_node (shell_session &oSession, const shell_node *pRawNode)
 Dispatch a node to the correct visit function.
 

Protected Member Functions

Visit functions for each concrete shell node type.

Implement these in derived classes.

virtual visit_t visit (shell_session &oSession, const shell_node_word *pNode)=0
 Visit a word node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_unicode *pNode)=0
 Visit a Unicode node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_str_simple *pNode)=0
 Visit a simple quoted string node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_str_double *pNode)=0
 Visit a double-quoted string node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_str_back *pNode)=0
 Visit a backtick command string node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_null_command *pNode)=0
 Visit a null command node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_command *pNode)=0
 Visit a command node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_command_expression *pNode)=0
 Visit a command expression node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_command_block *pNode)=0
 Visit a command block node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_command_block_subshell *pNode)=0
 Visit a subshell command block node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_arg *pNode)=0
 Visit an argument node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_variable *pNode)=0
 Visit a variable node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_dollar_arg *pNode)=0
 Visit a $N argument reference node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_dollar_variable *pNode)=0
 Visit a $var variable reference node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_dollar_arg_dhop *pNode)=0
 Visit a ${N} argument reference node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_dollar_variable_dhop *pNode)=0
 Visit a ${var} variable reference node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_dollar_command *pNode)=0
 Visit a command substitution node ($(...)).
 
virtual visit_t visit (shell_session &oSession, const shell_node_dollar_special *pNode)=0
 Visit a special variable node ($?, $#, etc.).
 
virtual visit_t visit (shell_session &oSession, const shell_node_background *pNode)=0
 Visit a background operator node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_pipe *pNode)=0
 Visit a pipe operator node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_or *pNode)=0
 Visit a logical OR operator node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_and *pNode)=0
 Visit a logical AND operator node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_test *pNode)=0
 Visit a test command node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_if *pNode)=0
 Visit an if-statement node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_break *pNode)=0
 Visit a break statement node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_continue *pNode)=0
 Visit a continue statement node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_for *pNode)=0
 Visit a for-loop node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_while *pNode)=0
 Visit a while-loop node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_until *pNode)=0
 Visit an until-loop node.
 
virtual visit_t visit (shell_session &oSession, const shell_node_function *pNode)=0
 Visit a function node.
 

Detailed Description

template<typename visit_t>
class bs::shell_node_visitor< visit_t >

Generic visitor for shell AST nodes.

This class implements a type–safe visitor pattern over all shell_node subclasses. Users must implement all visit() overloads corresponding to the node types they wish to handle.

Template Parameters
visit_tThe return type of all visit functions. Must be default-constructible.

Member Function Documentation

◆ visit() [1/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_and pNode 
)
protectedpure virtual

Visit a logical AND operator node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [2/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_arg pNode 
)
protectedpure virtual

Visit an argument node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [3/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_background pNode 
)
protectedpure virtual

Visit a background operator node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [4/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_break pNode 
)
protectedpure virtual

Visit a break statement node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [5/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_command pNode 
)
protectedpure virtual

Visit a command node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [6/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_command_block pNode 
)
protectedpure virtual

Visit a command block node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [7/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_command_block_subshell pNode 
)
protectedpure virtual

Visit a subshell command block node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [8/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_command_expression pNode 
)
protectedpure virtual

Visit a command expression node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [9/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_continue pNode 
)
protectedpure virtual

Visit a continue statement node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [10/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_dollar_arg pNode 
)
protectedpure virtual

Visit a $N argument reference node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [11/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_dollar_arg_dhop pNode 
)
protectedpure virtual

Visit a ${N} argument reference node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [12/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_dollar_command pNode 
)
protectedpure virtual

Visit a command substitution node ($(...)).

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [13/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_dollar_special pNode 
)
protectedpure virtual

Visit a special variable node ($?, $#, etc.).

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [14/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_dollar_variable pNode 
)
protectedpure virtual

Visit a $var variable reference node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [15/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_dollar_variable_dhop pNode 
)
protectedpure virtual

Visit a ${var} variable reference node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [16/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_for pNode 
)
protectedpure virtual

Visit a for-loop node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [17/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_function pNode 
)
protectedpure virtual

Visit a function node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [18/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_if pNode 
)
protectedpure virtual

Visit an if-statement node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [19/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_null_command pNode 
)
protectedpure virtual

Visit a null command node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [20/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_or pNode 
)
protectedpure virtual

Visit a logical OR operator node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [21/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_pipe pNode 
)
protectedpure virtual

Visit a pipe operator node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [22/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_str_back pNode 
)
protectedpure virtual

Visit a backtick command string node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [23/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_str_double pNode 
)
protectedpure virtual

Visit a double-quoted string node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [24/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_str_simple pNode 
)
protectedpure virtual

Visit a simple quoted string node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [25/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_test pNode 
)
protectedpure virtual

Visit a test command node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [26/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_unicode pNode 
)
protectedpure virtual

Visit a Unicode node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [27/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_until pNode 
)
protectedpure virtual

Visit an until-loop node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [28/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_variable pNode 
)
protectedpure virtual

Visit a variable node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [29/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_while pNode 
)
protectedpure virtual

Visit a while-loop node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit() [30/30]

template<typename visit_t >
virtual visit_t bs::shell_node_visitor< visit_t >::visit ( shell_session oSession,
const shell_node_word pNode 
)
protectedpure virtual

Visit a word node.

Parameters
oSessionThe current shell session.
pNodeThe node to visit.
Returns
The visitor result.

◆ visit_node()

template<typename visit_t >
shell_node_visitor< visit_t >::visit_type bs::shell_node_visitor< visit_t >::visit_node ( shell_session oSession,
const shell_node pRawNode 
)
virtual

Dispatch a node to the correct visit function.

Performs a type switch on the node's shell_node_type and forwards it to the corresponding visit() overload. If visit_t is void, no value is returned.

Parameters
oSessionExecution session.
pRawNodePointer to the node being visited.
Returns
The result of the dispatched visit, or a default-constructed visit_t if the node type is unhandled.

Reimplemented in bs::shell_node_visitor_json.


The documentation for this class was generated from the following file: