nl_tokens: returns the node
pl_tokens: function ( ) { let location = null ; const args = Array . prototype . slice . call ( arguments ) ; args . push ( docs ) ; if ( typeof result . preBuild === "function" ) { result . preBuild ( arguments ) ; } if ( self . withPositions || self . withSource ) { let src = null ; if ( self . withSource ) { src = parser . lexer . _input . substring ( start . offset , parser . prev [ 2 ] ) ; } if ( self . withPositions ) { location = new Location ( src , start , new Position ( parser . prev [ 0 ] , parser . prev [ 1 ] , parser . prev [ 2 ] ) ) ; } else { location = new Location ( src , null , null ) ; } // last argument is allways the location args . push ( location ) ; } // handle lazy kind definitions if ( ! kind ) { kind = args . shift ( ) ; } // build the object const node = self [ kind ] ; if ( typeof node !== "function" ) { throw new Error ( 'Undefined node "' + kind + '"' ) ; } const astNode = Object . create ( node . prototype ) ; node . apply ( astNode , args ) ; result . instance = astNode ; if ( result . trailingComments ) { // buffer of trailingComments astNode . trailingComments = result . trailingComments ; } if ( typeof result . postBuild === "function" ) { result . postBuild ( astNode ) ; } if ( parser . debug ) { delete AST . stack [ <mask> . stackUid ] ; } return self . resolvePrecedence ( astNode , parser ) ; }