parse.c
static void ParseReturn(ParseContext *c)
{
    ParseTreeNode *node = NewParseTreeNode(c, NodeTypeReturnStatement);
    int tkn;
            
    /* return with no value returns zero */
    if ((tkn = GetToken(c)) == T_EOL)
        node->u.returnStatement.expr = NULL;
        
    /* handle return with a value */
    else {
        SaveToken(c, tkn);
        node->u.returnStatement.expr = ParseExpr(c);
        FRequire(c, T_EOL);
    }
    
    /* add the statement to the current function */
    AddNodeToList(c, &c->bptr->pNextStatement, node);
}
/* ParseReturn - parse the 'RETURN' statement */
parse the 'RETURN' statement
parse the ' RETURN ' statement
static void ParseReturn(ParseContext *c)
{
    ParseTreeNode *node = NewParseTreeNode(c, NodeTypeReturnStatement);
    int tkn;
    if ((tkn = GetToken(c)) == T_EOL)
        node->u.returnStatement.expr = NULL;
    else {
        SaveToken(c, tkn);
        node->u.returnStatement.expr = ParseExpr(c);
        FRequire(c, T_EOL);
    }
    AddNodeToList(c, &c->bptr->pNextStatement, node);
}
static void ParseReturn ( ParseContext * c ) { ParseTreeNode * node = NewParseTreeNode ( c , NodeTypeReturnStatement ) ; int tkn ; if ( ( tkn = GetToken ( c ) ) == T_EOL ) node -> u . returnStatement . expr = NULL ; else { SaveToken ( c , tkn ) ; node -> u . returnStatement . expr = ParseExpr ( c ) ; FRequire ( c , T_EOL ) ; } AddNodeToList ( c , & c -> bptr -> pNextStatement , node ) ; }
ParseReturn - parse the 'RETURN' statement
ParseReturn - parse the ' RETURN ' statement
/* return with no value returns zero */ /* handle return with a value */ /* add the statement to the current function */